Compare commits

..

3 Commits

Author SHA1 Message Date
aea69148a8 Version v0.2.93 - Clean warnings 2025-08-27 08:23:31 -04:00
d537bc4948 Version v0.2.92 - Menu changes 2025-08-27 08:11:26 -04:00
42a8f5c358 Version v0.2.91 - Menu changes 2025-08-27 08:06:35 -04:00
2 changed files with 39 additions and 15 deletions

View File

@@ -5,7 +5,6 @@
## Some of the processing seems similar, so maybe code could be more compact.
## Command line otp -e should go to default pad, and then comment after the fact that it used the default pad.
## There is the problem of the location of the pad revealing metadata about how many messages have been sent in the past, or at least the size of the messsages.
@@ -17,7 +16,7 @@ Or, better yet, assume the offset is a very large size, and use the pad itself t
## We have three different decrypt file functions
## Preferences directory and files look off. Should probably have ~/.otp as the default directory, and then in there we can have otp.conf, pads/
## Setup for multiple USB drives

51
otp.c
View File

@@ -297,9 +297,6 @@ int command_line_mode(int argc, char* argv[]) {
// Call encrypt_text and then comment about using default pad
int result = encrypt_text(pad_identifier, text);
if (result == 0) {
printf("# Used default pad: %.16s...\n", pad_identifier);
}
return result;
} else {
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];
if (current_pads_dir[0] == '/') {
// 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 {
// Relative path - make it absolute
char current_dir[512];
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 {
// 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);
@@ -3602,7 +3611,7 @@ int handle_pads_menu(void) {
printf("No pads found.\n");
printf("\nOptions:\n");
printf(" \033[4mG\033[0menerate new pad\n");
printf(" \033[4mB\033[0mack to main menu\n");
printf(" E\033[4mx\033[0mit\n");
printf("\nSelect option: ");
char input[10];
@@ -3696,7 +3705,7 @@ int handle_pads_menu(void) {
printf("\nActions:\n");
printf(" \033[4mG\033[0menerate new pad\n");
printf(" \033[4mS\033[0met default pad\n");
printf(" \033[4mB\033[0mack to main menu\n");
printf(" E\033[4mx\033[0mit\n");
printf("\nSelect pad (by prefix) or action: ");
char input[MAX_HASH_LENGTH];
@@ -3747,15 +3756,31 @@ int handle_pads_menu(void) {
char new_default_path[1024];
if (current_pads_dir[0] == '/') {
// 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 {
// Relative path - make it absolute
char current_dir[512];
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 {
// 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();
}
}
}
@@ -3767,8 +3792,8 @@ int handle_pads_menu(void) {
}
return handle_pads_menu();
} else if (toupper(input[0]) == 'B') {
return 0; // Back to main menu
} else if (toupper(input[0]) == 'X') {
return 0; // Exit to main menu
}
// Find matching pad by prefix