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
This commit is contained in:
parent
cf82304d7d
commit
bcf9ae2751
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user