svn commit: r246197 - stable/9/lib/libc/gen
Xin LI
delphij at FreeBSD.org
Fri Feb 1 07:36:22 UTC 2013
Author: delphij
Date: Fri Feb 1 07:36:22 2013
New Revision: 246197
URL: http://svnweb.freebsd.org/changeset/base/246197
Log:
MFC r244568:
- Reduce buffer size from LINE_MAX to PATH_MAX, there is no point to store
path longer than this.
- Fix an unreached case of check against sizeof buf, which in turn leads
to an off-by-one nul byte write on the stack. The original condition
can never be satisfied because the passed boundary is the maximum value
that can be returned, so code was harmless.
Modified:
stable/9/lib/libc/gen/check_utility_compat.c
Directory Properties:
stable/9/lib/libc/ (props changed)
Modified: stable/9/lib/libc/gen/check_utility_compat.c
==============================================================================
--- stable/9/lib/libc/gen/check_utility_compat.c Fri Feb 1 07:26:25 2013 (r246196)
+++ stable/9/lib/libc/gen/check_utility_compat.c Fri Feb 1 07:36:22 2013 (r246197)
@@ -35,32 +35,28 @@ __FBSDID("$FreeBSD$");
* are threaded, so I'm not concerned about cancellation points or other
* niceties.
*/
+#include <sys/limits.h>
+
#include <limits.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-#ifndef LINE_MAX
-#define LINE_MAX _POSIX2_LINE_MAX
-#endif
-
#define _PATH_UTIL_COMPAT "/etc/compat-FreeBSD-4-util"
#define _ENV_UTIL_COMPAT "_COMPAT_FreeBSD_4"
int
check_utility_compat(const char *utility)
{
- char buf[LINE_MAX];
+ char buf[PATH_MAX];
char *p, *bp;
int len;
if ((p = getenv(_ENV_UTIL_COMPAT)) != NULL) {
strlcpy(buf, p, sizeof buf);
} else {
- if ((len = readlink(_PATH_UTIL_COMPAT, buf, sizeof buf)) < 0)
+ if ((len = readlink(_PATH_UTIL_COMPAT, buf, sizeof(buf) - 1)) < 0)
return 0;
- if (len > sizeof buf)
- len = sizeof buf;
buf[len] = '\0';
}
if (buf[0] == '\0')
More information about the svn-src-stable-9
mailing list