From: Simon Wilkinson Date: Sat, 2 Mar 2013 09:16:10 +0000 (+0000) Subject: aklog: Fix improper use of readlink X-Git-Tag: upstream/1.6.10_pre1^2~154 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=e56dfc5c2c97e1429924c44acce56bde8486ac8b;p=packages%2Fo%2Fopenafs.git aklog: Fix improper use of readlink readlink doesn't NUL terminate its return string, so it is up to us to do so. Caught by coverity (#985739) Reviewed-on: http://gerrit.openafs.org/9347 Reviewed-by: Derrick Brashear Tested-by: BuildBot Reviewed-by: Jeffrey Altman (cherry picked from commit 2fac53522e7ef5b3a376e191bffdc1f6784e6995) Change-Id: I9d47a6a7cbc86fba3f68f7e47c5d7a0fb924781f Reviewed-on: http://gerrit.openafs.org/11035 Reviewed-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Stephan Wiesand --- diff --git a/src/aklog/aklog.c b/src/aklog/aklog.c index c282c2471..7d3e7cd93 100644 --- a/src/aklog/aklog.c +++ b/src/aklog/aklog.c @@ -1211,12 +1211,16 @@ next_path(char *origpath) ? elast_comp - last_comp : strlen(last_comp); strncat(pathtocheck, last_comp, len); memset(linkbuf, 0, sizeof(linkbuf)); - if ((link = (readlink(pathtocheck, linkbuf, - sizeof(linkbuf)) > 0))) { + link = readlink(pathtocheck, linkbuf, sizeof(linkbuf)-1); + + if (link > 0) { + linkbuf[link] = '\0'; /* NUL terminate string */ + if (++symlinkcount > MAXSYMLINKS) { fprintf(stderr, "%s: %s\n", progname, strerror(ELOOP)); exit(AKLOG_BADPATH); } + memset(tmpbuf, 0, sizeof(tmpbuf)); if (elast_comp) strcpy(tmpbuf, elast_comp);