diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/testsuites/common/testsuite_common/mv_testsuite_common.c | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/test/testsuites/common/testsuite_common/mv_testsuite_common.c b/test/testsuites/common/testsuite_common/mv_testsuite_common.c index 7fff8422..d368ef80 100644 --- a/test/testsuites/common/testsuite_common/mv_testsuite_common.c +++ b/test/testsuites/common/testsuite_common/mv_testsuite_common.c @@ -82,23 +82,22 @@ int input_string(const char *prompt, size_t max_len, char **string) if (scanf("\n") != 0) return -1; - + if (max_len > 1024) { + printf("max_len is too large"); + return -1; + } char buffer[max_len]; - int last_char = 0; - buffer[last_char] = '\0'; - buffer[sizeof(buffer) - 1] = ~'\0'; if (NULL == fgets(buffer, sizeof(buffer), stdin)) return -1; - size_t real_string_len = strlen(buffer); - buffer[real_string_len - 1] = '\0'; - *string = (char*)malloc(real_string_len * sizeof(char)); + if (buffer[real_string_len - 1] == '\n') { //fgets read newline to buffer + buffer[real_string_len - 1] = '\0'; + real_string_len--; + } + *string = strdup(buffer); if (*string == NULL) return -1; - - strncpy(*string, buffer, real_string_len); - - return strlen(*string); + return real_string_len; } int input_size(const char *prompt, size_t max_size, size_t *size) @@ -114,8 +113,6 @@ int input_size(const char *prompt, size_t max_size, size_t *size) printf("ERROR: Incorrect input.\n"); return -1; } - scanf("%*[^\n]%*c"); - return (*size > max_size ? -1 : 0); } @@ -132,8 +129,6 @@ int input_int(const char *prompt, int min_value, int max_value, int *value) printf("ERROR: Incorrect input.\n"); return -1; } - scanf("%*[^\n]%*c"); - return (*value < min_value || *value > max_value ? -1 : 0); } @@ -154,8 +149,6 @@ int input_double( printf("ERROR: Incorrect input.\n"); return -1; } - scanf("%*[^\n]%*c"); - return (*value < min_value || *value > max_value ? -1 : 0); } @@ -241,8 +234,6 @@ int show_menu( printf("ERROR: Incorrect input.\n"); return -1; } - scanf("%*[^\n]%*c"); - return selection; } |