From 1f4c244044e9d0752253aa728a46bad792d7a351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Cort=C3=A9s?= Date: Sun, 13 Oct 2019 18:59:52 -0300 Subject: [PATCH] Now it can generate chars until UINT_MAX --- .gitignore | 1 + Makefile | 2 +- chars | Bin 17128 -> 0 bytes main.c | 36 +++++++++++++++++++++--------------- strtoui.h | 2 +- 5 files changed, 24 insertions(+), 17 deletions(-) create mode 100644 .gitignore delete mode 100755 chars diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7cc6b13 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +chars diff --git a/Makefile b/Makefile index 4917c92..9da6560 100644 --- a/Makefile +++ b/Makefile @@ -2,4 +2,4 @@ all: main.c strtoui.h gcc -Wall main.c strtoui.h -o chars -lsodium clean: - rm chars main.o + rm chars diff --git a/chars b/chars deleted file mode 100755 index 25e003aab8c18ebf62561c81df1d6607859083d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17128 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 diff --git a/main.c b/main.c index ee8c743..4c5056b 100644 --- a/main.c +++ b/main.c @@ -4,6 +4,9 @@ #include "sodium.h" #include "strtoui.h" +/** + * Maps a number that is between i_min and i_max to the range o_min and o_max + */ int map(int i, int i_min, int i_max, int o_min, int o_max) { double r = (double)(o_max - o_min) / (double)(i_max - i_min); int j = (double) (i - i_min) * r + o_min; @@ -11,32 +14,35 @@ int map(int i, int i_min, int i_max, int o_min, int o_max) { } int main(int argc, char *argv[]) { + //if doesnt have any argument just show a usage info if(argc == 1) { - puts("Usage: chars [length]"); - puts(" Max length is 1024"); + puts("Usage:\tchars [length]"); + puts("\t0 > lenght > UINT_MAX"); + puts("Description:"); + puts("\t Generates a random string with the specified length"); exit(EXIT_SUCCESS); } + //read the length argument and parse it to a an unsigned int unsigned int len; enum strtoui_error error = strtoui(&len, argv[1], 10); - if(error != STRTOUI_SUCCESS){ - fputs("Bad input\n", stderr); + if(error == STRTOUI_OVERFLOW){ + fputs("The input is too big\n", stderr); exit(EXIT_FAILURE); - }else if (len > 1024) { - fputs("The length is to big\n", stderr); + }else if(error == STRTOUI_UNDERFLOW) { + fputs("The input must be bigger than 0\n", stderr); + exit(EXIT_FAILURE); + }else if(error == STRTOUI_INCONVERTIBLE) { + fputs("The input isn't valid\n", stderr); exit(EXIT_FAILURE); } - char lower_range = 0x20; - char upper_range= 0x7e; - - char data[len]; - randombytes_buf(data, sizeof len); - + //prints random numbers in the bounds specified as chars + char lower_bound = 0x20; + char upper_bound= 0x7e; for(int i = 0; i < len; i++) { - int random = randombytes_uniform(upper_range); - data[i] = map(random, 0, upper_range, lower_range, upper_range); - printf("%c", data[i]); + int random = randombytes_uniform(upper_bound); + printf("%c", map(random, 0, upper_bound, lower_bound, upper_bound)); } printf("\n"); diff --git a/strtoui.h b/strtoui.h index 606cc4c..2d9bbcb 100644 --- a/strtoui.h +++ b/strtoui.h @@ -18,7 +18,7 @@ enum strtoui_error strtoui(unsigned int *out, char *s, int base) { if(s[0] == '\0' || isspace(s[0])) return STRTOUI_INCONVERTIBLE; long l = strtol(s, &end, base); - if(l > INT_MAX || (errno == ERANGE && l == LONG_MAX)) + if(l > UINT_MAX || (errno == ERANGE && l == LONG_MAX)) return STRTOUI_OVERFLOW; if(l < 0|| (errno == ERANGE && l == LONG_MIN)) return STRTOUI_UNDERFLOW;