Page MenuHomeFreeBSD

D46695.id143429.diff
No OneTemporary

D46695.id143429.diff

diff --git a/lib/libc/stdlib/realpath.c b/lib/libc/stdlib/realpath.c
--- a/lib/libc/stdlib/realpath.c
+++ b/lib/libc/stdlib/realpath.c
@@ -33,10 +33,10 @@
#include <sys/stat.h>
#include <errno.h>
+#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-#include <fcntl.h>
#include <ssp/ssp.h>
#include "un-namespace.h"
#include "libc_private.h"
@@ -146,13 +146,14 @@
return (NULL);
}
slen = readlink(resolved, symlink, sizeof(symlink));
- if (slen <= 0 || slen >= (ssize_t)sizeof(symlink)) {
- if (slen < 0)
- ; /* keep errno from readlink(2) call */
- else if (slen == 0)
- errno = ENOENT;
- else
- errno = ENAMETOOLONG;
+ if (slen < 0)
+ return (NULL);
+ if (slen == 0) {
+ errno = ENOENT;
+ return (NULL);
+ }
+ if ((size_t)slen >= sizeof(symlink)) {
+ errno = ENAMETOOLONG;
return (NULL);
}
symlink[slen] = '\0';
@@ -173,7 +174,7 @@
*/
if (p != NULL) {
if (symlink[slen - 1] != '/') {
- if (slen + 1 >= (ssize_t)sizeof(symlink)) {
+ if ((size_t)slen + 1 >= sizeof(symlink)) {
errno = ENAMETOOLONG;
return (NULL);
}

File Metadata

Mime Type
text/plain
Expires
Mon, Feb 9, 2:31 AM (7 h, 36 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28526716
Default Alt Text
D46695.id143429.diff (1 KB)

Event Timeline