Przeglądaj źródła

Fix potential heap buffer overflow in hdfs.c. Contributed by Igor Chervatyuk.

Akira Ajisaka 3 lat temu
rodzic
commit
4972e7a246

+ 6 - 1
hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs/hdfs.c

@@ -956,9 +956,14 @@ struct hdfsStreamBuilder {
 struct hdfsStreamBuilder *hdfsStreamBuilderAlloc(hdfsFS fs,
 struct hdfsStreamBuilder *hdfsStreamBuilderAlloc(hdfsFS fs,
                                             const char *path, int flags)
                                             const char *path, int flags)
 {
 {
-    int path_len = strlen(path);
+    size_t path_len = strlen(path);
     struct hdfsStreamBuilder *bld;
     struct hdfsStreamBuilder *bld;
 
 
+    // Check for overflow in path_len
+    if (path_len > SIZE_MAX - sizeof(struct hdfsStreamBuilder)) {
+        errno = EOVERFLOW;
+        return NULL;
+    }
     // sizeof(hdfsStreamBuilder->path) includes one byte for the string
     // sizeof(hdfsStreamBuilder->path) includes one byte for the string
     // terminator
     // terminator
     bld = malloc(sizeof(struct hdfsStreamBuilder) + path_len);
     bld = malloc(sizeof(struct hdfsStreamBuilder) + path_len);