X-Git-Url: https://iam.tj/gitweb/gitweb.cgi?p=cfe_generate_password.git;a=blobdiff_plain;f=cfe_generate_password.c;h=927b9e64b4634c9c1c430e573f1ad50d7ffa1d30;hp=0fe82738208b7777353218d17075d3fbb86c5288;hb=91408173b276846e676cf803cced45448ef3f590;hpb=b21a7e3ffc385e4abbae43f70833a69ebc6784bb diff --git a/cfe_generate_password.c b/cfe_generate_password.c index 0fe8273..927b9e6 100644 --- a/cfe_generate_password.c +++ b/cfe_generate_password.c @@ -60,11 +60,12 @@ #include #include -static const float VERSION = 1.0f; +static const float VERSION = 1.1f; static const size_t TIMESTAMP_SIZE = 6; static const size_t SEED_SIZE = 12; static const size_t PASSWORD_SIZE = 8; static const size_t MESSAGE_SIZE = 128; +static const size_t MAC_ADDR_SIZE = 17; static void pr_usage() @@ -85,12 +86,12 @@ static void pr_error_exit(unsigned int usage, const char *error, ...) { va_list args; - char error_message[MESSAGE_SIZE]; + char error_message[MESSAGE_SIZE + 1]; if (!error) return; va_start(args, error); - (void) vsnprintf(error_message, MESSAGE_SIZE, error, args); + (void) vsnprintf(error_message, MESSAGE_SIZE + 1, error, args); va_end(args); fprintf(stderr, "Error: %s\n", error_message); @@ -114,11 +115,11 @@ static unsigned int generate_seed(char *mac, char *timestamp, char *seed) { unsigned int result = 0; - if (mac && strlen(mac) == 17) { + if (mac && strlen(mac) == MAC_ADDR_SIZE) { size_t i; char *mac_ptr = mac + 9; size_t ts_len = strlen(timestamp); - for (i = 0; i <= SEED_SIZE; ++i) { + for (i = 0; i < SEED_SIZE; ++i) { /* if no timestamp assume CFE get_time() returned 0 and CFE g_pw_timestamp == 0x00000000 */ if (i < 6) seed[i] = ts_len ? timestamp[i] : '0'; @@ -130,7 +131,7 @@ generate_seed(char *mac, char *timestamp, char *seed) } result = 1; } else - pr_error_exit(0, "MAC-ADDR should be 17 characters, e.g: 00:01:02:03:04:05"); + pr_error_exit(0, "MAC-ADDR should be %d characters, e.g: 00:01:02:03:04:05", MAC_ADDR_SIZE); return result; } @@ -140,7 +141,7 @@ generate_pass(char *seed, char *password) { unsigned int result = 0; - if (seed && strlen(seed) == 12) { + if (seed && strlen(seed) == SEED_SIZE) { unsigned int timestamp, byte, key, pass; timestamp = byte = 0; if(! sscanf(seed, "%06x", ×tamp)) @@ -230,7 +231,8 @@ main(int argc, char **argv, char **env) if (! generate_pass(seed, password)) pr_error_exit(0, "unable to generate password"); - printf("MAC address: %s Timestamp: %s Seed: %s Password: %s\n", MAC_ADDR, timestamp, seed, password); + if (opt_seed || opt_pass) + printf("MAC address: %s Timestamp: %s Seed: %s Password: %s\n", MAC_ADDR, timestamp, seed, password); } return result;