Mercurial > trustbridge
changeset 126:898446d9d23e
Normalize input if neccessary
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Mon, 24 Mar 2014 10:13:55 +0000 |
parents | 24fb90ef8f6a |
children | 04dcc0fb1eca |
files | cinst/main.c |
diffstat | 1 files changed, 15 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/cinst/main.c Mon Mar 24 10:13:13 2014 +0000 +++ b/cinst/main.c Mon Mar 24 10:13:55 2014 +0000 @@ -85,7 +85,7 @@ int lines_read = 0; int readingList = 0; size_t list_size = 0; - char buf[MAX_LINE_LENGTH + 1]; + char buf[MAX_LINE_LENGTH + 2]; if (*certificate_list || *to_install || *to_remove) { printf("Error invalid parameters\n"); @@ -94,14 +94,26 @@ while (fgets(buf, MAX_LINE_LENGTH + 1, stdin)) { size_t len = strlen(buf); /* fgets ensures buf is terminated */ - if (len < 2) { - printf("Line to short.\n"); + if (len <= 3) { + printf("Line too short.\n"); return ERR_INVALID_INPUT; } if (lines_read ++ > MAX_LINES) { printf("Too many lines\n"); return ERR_TOO_MUCH_INPUT; } + + if (buf[len-2] != '\r') { + if (buf[len-1] != '\n') { + printf("Line too long.\n"); + return ERR_INVALID_INPUT; + } + buf[len-1] = '\r'; + buf[len] = '\n'; + buf[len+1] = '\0'; + len++; + } + if (strcmp("-----BEGIN CERTIFICATE LIST-----\r\n", buf) == 0){ readingList = 1; continue;