Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| aea69148a8 | |||
| d537bc4948 | |||
| 42a8f5c358 |
3
TODO.md
3
TODO.md
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
## Some of the processing seems similar, so maybe code could be more compact.
|
## 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.
|
## 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
|
## 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
|
## Setup for multiple USB drives
|
||||||
|
|
||||||
|
|||||||
51
otp.c
51
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);
|
||||||
@@ -3602,7 +3611,7 @@ int handle_pads_menu(void) {
|
|||||||
printf("No pads found.\n");
|
printf("No pads found.\n");
|
||||||
printf("\nOptions:\n");
|
printf("\nOptions:\n");
|
||||||
printf(" \033[4mG\033[0menerate new pad\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: ");
|
printf("\nSelect option: ");
|
||||||
|
|
||||||
char input[10];
|
char input[10];
|
||||||
@@ -3696,7 +3705,7 @@ int handle_pads_menu(void) {
|
|||||||
printf("\nActions:\n");
|
printf("\nActions:\n");
|
||||||
printf(" \033[4mG\033[0menerate new pad\n");
|
printf(" \033[4mG\033[0menerate new pad\n");
|
||||||
printf(" \033[4mS\033[0met default 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: ");
|
printf("\nSelect pad (by prefix) or action: ");
|
||||||
|
|
||||||
char input[MAX_HASH_LENGTH];
|
char input[MAX_HASH_LENGTH];
|
||||||
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3767,8 +3792,8 @@ int handle_pads_menu(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return handle_pads_menu();
|
return handle_pads_menu();
|
||||||
} else if (toupper(input[0]) == 'B') {
|
} else if (toupper(input[0]) == 'X') {
|
||||||
return 0; // Back to main menu
|
return 0; // Exit to main menu
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find matching pad by prefix
|
// Find matching pad by prefix
|
||||||
|
|||||||
Reference in New Issue
Block a user