Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| aea69148a8 | |||
| d537bc4948 |
43
otp.c
43
otp.c
@@ -297,9 +297,6 @@ int command_line_mode(int argc, char* argv[]) {
|
|||||||
|
|
||||||
// Call encrypt_text and then comment about using default pad
|
// Call encrypt_text and then comment about using default pad
|
||||||
int result = encrypt_text(pad_identifier, text);
|
int result = encrypt_text(pad_identifier, text);
|
||||||
if (result == 0) {
|
|
||||||
printf("# Used default pad: %.16s...\n", pad_identifier);
|
|
||||||
}
|
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
printf("Error: No default pad configured. Specify pad explicitly or configure default pad.\n");
|
printf("Error: No default pad configured. Specify pad explicitly or configure default pad.\n");
|
||||||
@@ -2730,15 +2727,27 @@ int load_preferences(void) {
|
|||||||
char absolute_path[1024];
|
char absolute_path[1024];
|
||||||
if (current_pads_dir[0] == '/') {
|
if (current_pads_dir[0] == '/') {
|
||||||
// Already absolute path
|
// Already absolute path
|
||||||
snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s", current_pads_dir, entry->d_name);
|
int ret = snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s", current_pads_dir, entry->d_name);
|
||||||
|
if (ret >= (int)sizeof(first_pad_path)) {
|
||||||
|
// Path was truncated, skip this entry
|
||||||
|
continue;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Relative path - make it absolute
|
// Relative path - make it absolute
|
||||||
char current_dir[512];
|
char current_dir[512];
|
||||||
if (getcwd(current_dir, sizeof(current_dir))) {
|
if (getcwd(current_dir, sizeof(current_dir))) {
|
||||||
snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s/%s", current_dir, current_pads_dir, entry->d_name);
|
int ret = snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s/%s", current_dir, current_pads_dir, entry->d_name);
|
||||||
|
if (ret >= (int)sizeof(first_pad_path)) {
|
||||||
|
// Path was truncated, skip this entry
|
||||||
|
continue;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Fallback to relative path
|
// Fallback to relative path
|
||||||
snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s", current_pads_dir, entry->d_name);
|
int ret = snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s", current_pads_dir, entry->d_name);
|
||||||
|
if (ret >= (int)sizeof(first_pad_path)) {
|
||||||
|
// Path was truncated, skip this entry
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
strncpy(default_pad_path, first_pad_path, sizeof(default_pad_path) - 1);
|
strncpy(default_pad_path, first_pad_path, sizeof(default_pad_path) - 1);
|
||||||
@@ -3747,15 +3756,31 @@ int handle_pads_menu(void) {
|
|||||||
char new_default_path[1024];
|
char new_default_path[1024];
|
||||||
if (current_pads_dir[0] == '/') {
|
if (current_pads_dir[0] == '/') {
|
||||||
// Already absolute path
|
// Already absolute path
|
||||||
snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum);
|
int ret = snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum);
|
||||||
|
if (ret >= (int)sizeof(new_default_path)) {
|
||||||
|
printf("Error: Path too long for default pad setting\n");
|
||||||
|
return handle_pads_menu();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Relative path - make it absolute
|
// Relative path - make it absolute
|
||||||
char current_dir[512];
|
char current_dir[512];
|
||||||
if (getcwd(current_dir, sizeof(current_dir))) {
|
if (getcwd(current_dir, sizeof(current_dir))) {
|
||||||
snprintf(new_default_path, sizeof(new_default_path), "%s/%s/%s.pad", current_dir, current_pads_dir, pads[matched_pad].chksum);
|
int ret = snprintf(new_default_path, sizeof(new_default_path), "%s/%s/%s.pad", current_dir, current_pads_dir, pads[matched_pad].chksum);
|
||||||
|
if (ret >= (int)sizeof(new_default_path)) {
|
||||||
|
// Path was truncated, fall back to relative path
|
||||||
|
int ret2 = snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum);
|
||||||
|
if (ret2 >= (int)sizeof(new_default_path)) {
|
||||||
|
printf("Error: Path too long for default pad setting\n");
|
||||||
|
return handle_pads_menu();
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Fallback to relative path
|
// Fallback to relative path
|
||||||
snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum);
|
int ret = snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum);
|
||||||
|
if (ret >= (int)sizeof(new_default_path)) {
|
||||||
|
printf("Error: Path too long for default pad setting\n");
|
||||||
|
return handle_pads_menu();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user