svn commit: r367689 - head/lib/libutil
Scott Long
scottl at FreeBSD.org
Sat Nov 14 19:04:37 UTC 2020
Author: scottl
Date: Sat Nov 14 19:04:36 2020
New Revision: 367689
URL: https://svnweb.freebsd.org/changeset/base/367689
Log:
Fix a problem with r367686 related to the use of ssize_t. Not sure how this
escaped prior testing, but it should be better now.
Reported by: lots
Modified:
head/lib/libutil/getlocalbase.c
head/lib/libutil/libutil.h
Modified: head/lib/libutil/getlocalbase.c
==============================================================================
--- head/lib/libutil/getlocalbase.c Sat Nov 14 18:06:35 2020 (r367688)
+++ head/lib/libutil/getlocalbase.c Sat Nov 14 19:04:36 2020 (r367689)
@@ -31,6 +31,7 @@ __FBSDID("$FreeBSD$");
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/sysctl.h>
+#include <sys/limits.h>
#include <stdlib.h>
#include <paths.h>
#include <libutil.h>
@@ -66,10 +67,16 @@ getlocalbase(char *path, size_t pathlen)
#endif
tmplen = strlcpy(path, tmppath, pathlen);
- if ((tmplen < 0) || (tmplen >= (ssize_t)pathlen)) {
+ if ((tmplen < 0) || (tmplen >= pathlen)) {
errno = ENOMEM;
- tmplen = -1;
+ return (-1);
}
- return (tmplen);
+ /* It's unlikely that the buffer would be this big */
+ if (tmplen >= SSIZE_MAX) {
+ errno = ENOMEM;
+ return (-1);
+ }
+
+ return ((ssize_t)tmplen);
}
Modified: head/lib/libutil/libutil.h
==============================================================================
--- head/lib/libutil/libutil.h Sat Nov 14 18:06:35 2020 (r367688)
+++ head/lib/libutil/libutil.h Sat Nov 14 19:04:36 2020 (r367689)
@@ -65,6 +65,11 @@ typedef __size_t size_t;
#define _SIZE_T_DECLARED
#endif
+#ifndef _SSIZE_T_DECLARED
+typedef __ssize_t ssize_t;
+#define _SSIZE_T_DECLARED
+#endif
+
#ifndef _UID_T_DECLARED
typedef __uid_t uid_t;
#define _UID_T_DECLARED
More information about the svn-src-all
mailing list