continue;
memcpy(&size, buffer+1, sizeof(size));
+ size = le32toh(size);
if (size+5 > sizeof(buffer)) {
r = -EIO;
goto finish;
int socket_fd = -1;
bool accept_cached = false;
- const ConfigItem items[] = {
- { "Socket", config_parse_string, 0, &socket_name, "Ask" },
- { "NotAfter", config_parse_uint64, 0, ¬_after, "Ask" },
- { "Message", config_parse_string, 0, &message, "Ask" },
- { "PID", config_parse_unsigned, 0, &pid, "Ask" },
- { "AcceptCached", config_parse_bool, 0, &accept_cached, "Ask" },
- { NULL, NULL, 0, NULL, NULL }
+ const ConfigTableItem items[] = {
+ { "Ask", "Socket", config_parse_string, 0, &socket_name },
+ { "Ask", "NotAfter", config_parse_uint64, 0, ¬_after },
+ { "Ask", "Message", config_parse_string, 0, &message },
+ { "Ask", "PID", config_parse_unsigned, 0, &pid },
+ { "Ask", "AcceptCached", config_parse_bool, 0, &accept_cached },
+ { NULL, NULL, NULL, 0, NULL }
};
FILE *f;
assert(filename);
- if (!(f = fopen(filename, "re"))) {
-
+ f = fopen(filename, "re");
+ if (!f) {
if (errno == ENOENT)
return 0;
return -errno;
}
- if ((r = config_parse(filename, f, NULL, items, true, NULL)) < 0) {
+ r = config_parse(filename, f, NULL, config_item_table_lookup, (void*) items, true, NULL);
+ if (r < 0) {
log_error("Failed to parse password file %s: %s", filename, strerror(-r));
goto finish;
}
release_terminal();
}
- packet_length = 1+strlen(password)+1;
- if (!(packet = new(char, packet_length)))
- r = -ENOMEM;
- else {
- packet[0] = '+';
- strcpy(packet+1, password);
- }
+ if (r >= 0) {
+ packet_length = 1+strlen(password)+1;
+ if (!(packet = new(char, packet_length)))
+ r = -ENOMEM;
+ else {
+ packet[0] = '+';
+ strcpy(packet+1, password);
+ }
- free(password);
+ free(password);
+ }
}
if (r == -ETIME || r == -ENOENT) {
log_parse_environment();
log_open();
+ umask(0022);
+
if ((r = parse_argv(argc, argv)) <= 0)
goto finish;