Test improvements, remove redundant code

This commit is contained in:
Roger A. Light 2024-02-26 18:25:31 +00:00
parent 3d1b132a16
commit 8ccef0713b
9 changed files with 31 additions and 98 deletions

View file

@ -79,17 +79,16 @@ static int gets_quiet(char *s, int len)
return 0;
#else
struct termios ts_quiet, ts_orig;
struct termios ts_quiet;
char *rs;
memset(s, 0, (size_t)len);
tcgetattr(0, &ts_orig);
ts_quiet = ts_orig;
tcgetattr(0, &ts_quiet);
ts_quiet.c_lflag &= (unsigned int)(~(ECHO | ICANON));
tcsetattr(0, TCSANOW, &ts_quiet);
rs = fgets(s, len, stdin);
tcsetattr(0, TCSANOW, &ts_orig);
get_password__reset_term();
if(!rs){
return 1;

View file

@ -107,13 +107,6 @@ static FILE *mpw_tmpfile(void)
}
#endif
int log__printf(void *mosq, unsigned int level, const char *fmt, ...)
{
/* Stub for misc_mosq.c */
UNUSED(mosq); UNUSED(level); UNUSED(fmt); return 0;
}
static void print_usage(void)
{
printf("mosquitto_passwd is a tool for managing password files for mosquitto.\n\n");
@ -205,16 +198,14 @@ static int pwfile_iterate(FILE *fptr, FILE *ftmp,
line++;
username = strtok(buf, ":");
password = strtok(NULL, ":");
if(username == NULL || password == NULL){
fprintf(stderr, "Error: Corrupt password file at line %d.\n", line);
free(lbuf);
free(buf);
return 1;
if(username && password){
username = misc__trimblanks(username);
password = misc__trimblanks(password);
}
username = misc__trimblanks(username);
password = misc__trimblanks(password);
if(strlen(username) == 0 || strlen(password) == 0){
if(username == NULL || strlen(username) == 0
|| password == NULL || strlen(password) == 0){
fprintf(stderr, "Error: Corrupt password file at line %d.\n", line);
free(lbuf);
free(buf);
@ -370,10 +361,6 @@ static int create_backup(char *backup_file, FILE *fptr)
int fd;
umask(077);
fd = mkstemp(backup_file);
if(fd < 0){
fprintf(stderr, "Error creating backup password file \"%s\", not continuing.\n", backup_file);
return 1;
}
fbackup = fdopen(fd, "wt");
#endif
if(!fbackup){
@ -660,15 +647,10 @@ int main(int argc, char *argv[])
rc = update_pwuser(fptr, ftmp, username, password_cmd, iterations);
}else{
rc = get_password("Password: ", "Reenter password: ", false, password, MAX_BUFFER_LEN);
if(rc){
fclose(fptr);
fclose(ftmp);
unlink(backup_file);
free(backup_file);
return rc;
if(rc == 0){
/* Update password for individual user */
rc = update_pwuser(fptr, ftmp, username, password, iterations);
}
/* Update password for individual user */
rc = update_pwuser(fptr, ftmp, username, password, iterations);
}
}
if(rc){
@ -680,19 +662,18 @@ int main(int argc, char *argv[])
}
if(copy_contents(ftmp, fptr)){
fclose(fptr);
fclose(ftmp);
fprintf(stderr, "Error occurred updating password file.\n");
fprintf(stderr, "Password file may be corrupt, check the backup file: %s.\n", backup_file);
free(backup_file);
return 1;
rc = 1;
}
fclose(fptr);
fclose(ftmp);
/* Everything was ok so backup no longer needed. May contain old
* passwords so shouldn't be kept around. */
unlink(backup_file);
if(rc == 0){
/* Everything was ok so backup no longer needed. May contain old
* passwords so shouldn't be kept around. */
unlink(backup_file);
}
free(backup_file);
}

View file

@ -125,10 +125,6 @@ int cfg_parse_property(struct mosq_config *cfg, int argc, char *argv[], int *idx
break;
case CMD_SUBSCRIBE:
if(identifier != MQTT_PROP_SUBSCRIPTION_IDENTIFIER && identifier != MQTT_PROP_USER_PROPERTY){
fprintf(stderr, "Error: %s property not supported for %s in --property argument.\n\n", propname, cmdname);
return MOSQ_ERR_NOT_SUPPORTED;
}
proplist = &cfg->subscribe_props;
break;

View file

@ -511,37 +511,6 @@ int client_config_load(struct mosq_config *cfg, int pub_or_sub, int argc, char *
}
}
rc = mosquitto_property_check_all(CMD_CONNECT, cfg->connect_props);
if(rc){
err_printf(cfg, "Error in CONNECT properties: %s\n", mosquitto_strerror(rc));
return 1;
}
rc = mosquitto_property_check_all(CMD_PUBLISH, cfg->publish_props);
if(rc){
err_printf(cfg, "Error in PUBLISH properties: %s\n", mosquitto_strerror(rc));
return 1;
}
rc = mosquitto_property_check_all(CMD_SUBSCRIBE, cfg->subscribe_props);
if(rc){
err_printf(cfg, "Error in SUBSCRIBE properties: %s\n", mosquitto_strerror(rc));
return 1;
}
rc = mosquitto_property_check_all(CMD_UNSUBSCRIBE, cfg->unsubscribe_props);
if(rc){
err_printf(cfg, "Error in UNSUBSCRIBE properties: %s\n", mosquitto_strerror(rc));
return 1;
}
rc = mosquitto_property_check_all(CMD_DISCONNECT, cfg->disconnect_props);
if(rc){
err_printf(cfg, "Error in DISCONNECT properties: %s\n", mosquitto_strerror(rc));
return 1;
}
rc = mosquitto_property_check_all(CMD_WILL, cfg->will_props);
if(rc){
err_printf(cfg, "Error in Will properties: %s\n", mosquitto_strerror(rc));
return 1;
}
return MOSQ_ERR_SUCCESS;
}
@ -920,12 +889,7 @@ int client_config_line_proc(struct mosq_config *cfg, int pub_or_sub, int argc, c
}
cfg->eol = false;
}else if(!strcmp(argv[i], "-o")){
if(i==argc-1){
fprintf(stderr, "Error: -o argument given but no options file specified.\n\n");
return 1;
}else{
/* Already handled */
}
/* Already handled */
i++;
}else if(!strcmp(argv[i], "-p") || !strcmp(argv[i], "--port")){
if(i==argc-1){

View file

@ -136,18 +136,6 @@ static void my_subscribe_callback(struct mosquitto *mosq, void *obj, int mid, in
}
void my_publish_callback(struct mosquitto *mosq, void *obj, int mid, int reason_code, const mosquitto_property *properties)
{
UNUSED(mosq);
UNUSED(obj);
UNUSED(mid);
UNUSED(reason_code);
UNUSED(properties);
client_state = rr_s_wait_for_response;
}
static void print_version(void)
{
int major, minor, revision;

View file

@ -18,18 +18,19 @@ def client_check(port, username, password, rc):
sock.close()
def passwd_cmd(args, port, response=None, input=None):
def passwd_cmd(args, port, response=None, input=None, expected_rc=0):
proc = subprocess.run([mosq_test.get_build_root()+"/apps/mosquitto_passwd/mosquitto_passwd"]
+ args,
capture_output=True, encoding='utf-8', timeout=2, input=input)
if response is not None:
if proc.stdout != response:
print(len(proc.stdout))
print(len(response))
if proc.stdout != response and proc.stderr != response:
print(f"stdout: {proc.stdout}")
print(f"stderr: {proc.stderr}")
print(f"expected: {response}")
raise ValueError(proc.stdout)
if proc.returncode != 0:
if proc.returncode != expected_rc:
raise ValueError(args)
@ -91,6 +92,7 @@ try:
# Delete user
passwd_cmd(["-D", pw_file, "user2"], port)
passwd_cmd(["-D", pw_file, "user2"], port, response="Warning: User user2 not found in password file.\n", expected_rc=1)
broker.send_signal(signal.SIGHUP)
client_check(port, "user1", "badpass", 5)

View file

@ -104,6 +104,8 @@ if __name__ == '__main__':
do_test(['-V', '5', '-D', 'subscribe', 'subscription-identifier', '-1'], "Error: Property value (-1) out of range for property subscription-identifier.\n\n" + helps, 1)
do_test(['-V', '5', '-D', 'subscribe', 'subscription-identifier', '4294967296'], "Error: Property value (4294967296) out of range for property subscription-identifier.\n\n" + helps, 1)
do_test(['-V', '5', '-D', 'subscribe', 'topic-alias', '1'], "Error: topic-alias property not allowed for subscribe in --property argument.\n\n" + helps, 1)
do_test(['-V', '5', '-D', 'auth', 'authentication-method', '1'], "Error: authentication-method property not supported for auth in --property argument.\n\n" + helps, 1)
do_test(['-V', '5', '-D', 'puback', 'reason-string', '1'], "Error: reason-string property not supported for puback in --property argument.\n\n" + helps, 1)
do_test(['-T', '++'], "Error: Invalid filter topic '++', are all '+' and '#' wildcards correct?\n" + helps, 1)
do_test(['-U', '++'], "Error: Invalid unsubscribe topic '++', are all '+' and '#' wildcards correct?\n" + helps, 1)
do_test(['-V', '0'], "Error: Invalid protocol version argument given.\n\n" + helps, 1)

View file

@ -101,6 +101,7 @@ if __name__ == '__main__':
do_test(['-V', '5', '-D', 'connect', 'receive-maximum', '65536'], "Error: Property value (65536) out of range for property receive-maximum.\n\n" + helps, 1)
do_test(['-V', '5', '-D', 'connect', 'session-expiry-interval', '-1'], "Error: Property value (-1) out of range for property session-expiry-interval.\n\n" + helps, 1)
do_test(['-V', '5', '-D', 'connect', 'session-expiry-interval', '4294967296'], "Error: Property value (4294967296) out of range for property session-expiry-interval.\n\n" + helps, 1)
do_test(['-V', '5', '-D', 'connect', 'subscription-identifier', '1'], "Error: subscription-identifier property not allowed for connect in --property argument.\n\n" + helps, 1)
do_test(['-V', '5', '-D', 'publish', 'subscription-identifier', '1'], "Error: subscription-identifier property not supported for publish in --property argument.\n\n" + helps, 1)
# Unknown options

View file

@ -16,7 +16,7 @@ def do_test(proto_ver, host):
print("microsocks not found, skipping test")
sys.exit(0)
cmd = ['microsocks', '-1', '-i', host, '-u', 'user', '-P', 'password', '-p', str(port1)]
cmd = ['microsocks', '-1', '-i', host, '-u', 'user', '-P', 'pass:word', '-p', str(port1)]
if b"bindaddr" in proxy.stderr:
cmd += ['-b', host]
else:
@ -47,7 +47,7 @@ def do_test(proto_ver, host):
'-t', '03/pub/proxy/test',
'-m', 'message',
'-V', V,
'--proxy', f'socks5h://user:password@{host}:{port1}'
'--proxy', f'socks5h://user:pass%3Aword@{host}:{port1}'
]
mid = 1