[hackers] [sbase] fix length after '\' getline string termination || Hiltjo Posthuma

From: <git_AT_suckless.org>
Date: Fri, 26 Feb 2016 10:54:55 +0100 (CET)

commit e8eeb19fcd9760dca4318e931a16000a6d617be5
Author: Hiltjo Posthuma <hiltjo_AT_codemadness.org>
AuthorDate: Thu Feb 25 21:42:36 2016 +0100
Commit: sin <sin_AT_2f30.org>
CommitDate: Fri Feb 26 09:54:46 2016 +0000

    fix length after '\' getline string termination

diff --git a/cut.c b/cut.c
index 0258271..4719c8b 100644
--- a/cut.c
+++ b/cut.c
_AT_@ -115,8 +115,8 @@ cut(FILE *fp, const char *fname)
         Range *r;
 
         while ((len = getline(&buf, &size, fp)) > 0) {
- if (len && buf[len - 1] == '\n')
- buf[len - 1] = '\0';
+ if (buf[len - 1] == '\n')
+ buf[--len] = '\0';
                 if (mode == 'f' && !utfutf(buf, delim)) {
                         if (!sflag)
                                 puts(buf);
diff --git a/head.c b/head.c
index a99b6f4..bece31b 100644
--- a/head.c
+++ b/head.c
_AT_@ -15,7 +15,7 @@ head(FILE *fp, const char *fname, size_t n)
 
         while (i < n && (len = getline(&buf, &size, fp)) > 0) {
                 fputs(buf, stdout);
- i += (len && (buf[len - 1] == '\n'));
+ i += (buf[len - 1] == '\n');
         }
         free(buf);
         if (ferror(fp))
diff --git a/sed.c b/sed.c
index 6cfd121..819a944 100644
--- a/sed.c
+++ b/sed.c
_AT_@ -441,8 +441,8 @@ read_line(FILE *f, String *s)
                         eprintf("getline:");
                 return EOF;
         }
- if (s->str[--len] == '\n')
- s->str[len] = '\0';
+ if (s->str[len] == '\n')
+ s->str[--len] = '\0';
         return 0;
 }
 
diff --git a/tail.c b/tail.c
index 4ab5fde..9addb0d 100644
--- a/tail.c
+++ b/tail.c
_AT_@ -23,7 +23,7 @@ dropinit(FILE *fp, const char *str, size_t n)
 
         if (mode == 'n') {
                 while (i < n && (len = getline(&buf, &size, fp)) > 0)
- if (len > 0 && buf[len - 1] == '\n')
+ if (buf[len - 1] == '\n')
                                 i++;
         } else {
                 while (i < n && (len = efgetrune(&r, fp, str)))
diff --git a/uudecode.c b/uudecode.c
index b53570c..eca9727 100644
--- a/uudecode.c
+++ b/uudecode.c
_AT_@ -169,9 +169,9 @@ uudecode(FILE *fp, FILE *outfp)
         while ((len = getline(&bufb, &n, fp)) > 0) {
                 p = bufb;
                 /* trim newlines */
- if (!len || bufb[len - 1] != '\n')
+ if (bufb[len - 1] != '\n')
                         eprintf("no newline found, aborting\n");
- bufb[len - 1] = '\0';
+ bufb[--len] = '\0';
 
                 /* check for last line */
                 if ((i = DEC(*p)) <= 0)
Received on Fri Feb 26 2016 - 10:54:55 CET

This archive was generated by hypermail 2.3.0 : Fri Feb 26 2016 - 11:00:17 CET