[ 
https://issues.apache.org/jira/browse/HDFS-15944?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Íñigo Goiri resolved HDFS-15944.
--------------------------------
    Fix Version/s: 3.4.0
     Hadoop Flags: Reviewed
       Resolution: Fixed

> Prevent truncation by snprintf
> ------------------------------
>
>                 Key: HDFS-15944
>                 URL: https://issues.apache.org/jira/browse/HDFS-15944
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: fuse-dfs, libhdfs
>    Affects Versions: 3.4.0
>            Reporter: Gautham Banasandra
>            Assignee: Gautham Banasandra
>            Priority: Critical
>              Labels: pull-request-available
>             Fix For: 3.4.0
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> There are some areas of code in libhdfs and fuse-dfs components where the 
> destination buffer is smaller than the source that's trying to write. This 
> would cause truncation. Thus we need to ensure that the source that's being 
> written doesn't exceed the destination buffer size.
> The following warnings are reported for this issue -
> {code}
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/test_libhdfs_threaded.c:
>  In function ‘doTestHdfsOperations.isra.0’:
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/test_libhdfs_threaded.c:226:39:
>  warning: ‘/many_files_’ directive output may be truncated writing 12 bytes 
> into a region of size between 1 and 4096 [-Wformat-truncation=]
>   226 |       snprintf(filename, PATH_MAX, "%s/many_files_%d", listDirTest, 
> nFile);
>       |                                       ^~~~~~~~~~~~
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/test_libhdfs_threaded.c:226:36:
>  note: directive argument in the range [0, 9999]
>   226 |       snprintf(filename, PATH_MAX, "%s/many_files_%d", listDirTest, 
> nFile);
>       |                                    ^~~~~~~~~~~~~~~~~~
> In file included from /usr/include/stdio.h:867,
>                  from 
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/expect.h:23,
>                  from 
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/test_libhdfs_threaded.c:19:
> /usr/include/x86_64-linux-gnu/bits/stdio2.h:67:10: note: 
> ‘__builtin___snprintf_chk’ output between 14 and 4112 bytes into a 
> destination of size 4096
>    67 |   return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
>       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    68 |        __bos (__s), __fmt, __va_arg_pack ());
>       |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> {code}
> {code}
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/test/fuse_workload.c:255:33:
>  warning: ‘/a’ directive output may be truncated writing 2 bytes into a 
> region of size between 1 and 4096 [-Wformat-truncation=]
>   255 |   snprintf(tmp, sizeof(tmp), "%s/a", base);
>       |                                 ^~
> In file included from /usr/include/stdio.h:867,
>                  from 
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/expect.h:23,
>                  from 
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/test/fuse_workload.c:22:
> /usr/include/x86_64-linux-gnu/bits/stdio2.h:67:10: note: 
> ‘__builtin___snprintf_chk’ output between 3 and 4098 bytes into a destination 
> of size 4096
>    67 |   return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
>       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    68 |        __bos (__s), __fmt, __va_arg_pack ());
>       |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/test/fuse_workload.c:263:33:
>  warning: ‘/b’ directive output may be truncated writing 2 bytes into a 
> region of size between 1 and 4096 [-Wformat-truncation=]
>   263 |   snprintf(tmp, sizeof(tmp), "%s/b", base);
>       |                                 ^~
> In file included from /usr/include/stdio.h:867,
>                  from 
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/expect.h:23,
>                  from 
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/test/fuse_workload.c:22:
> /usr/include/x86_64-linux-gnu/bits/stdio2.h:67:10: note: 
> ‘__builtin___snprintf_chk’ output between 3 and 4098 bytes into a destination 
> of size 4096
>    67 |   return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
>       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    68 |        __bos (__s), __fmt, __va_arg_pack ());
>       |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/test/fuse_workload.c:271:33:
>  warning: ‘/a’ directive output may be truncated writing 2 bytes into a 
> region of size between 1 and 4096 [-Wformat-truncation=]
>   271 |   snprintf(src, sizeof(src), "%s/a", base);
>       |                                 ^~
> In file included from /usr/include/stdio.h:867,
>                  from 
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/expect.h:23,
>                  from 
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/test/fuse_workload.c:22:
> /usr/include/x86_64-linux-gnu/bits/stdio2.h:67:10: note: 
> ‘__builtin___snprintf_chk’ output between 3 and 4098 bytes into a destination 
> of size 4096
>    67 |   return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
>       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    68 |        __bos (__s), __fmt, __va_arg_pack ());
>       |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/test/fuse_workload.c:272:33:
>  warning: ‘/c’ directive output may be truncated writing 2 bytes into a 
> region of size between 1 and 4096 [-Wformat-truncation=]
>   272 |   snprintf(dst, sizeof(dst), "%s/c", base);
>       |                                 ^~
> In file included from /usr/include/stdio.h:867,
>                  from 
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/expect.h:23,
>                  from 
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/test/fuse_workload.c:22:
> /usr/include/x86_64-linux-gnu/bits/stdio2.h:67:10: note: 
> ‘__builtin___snprintf_chk’ output between 3 and 4098 bytes into a destination 
> of size 4096
>    67 |   return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
>       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    68 |        __bos (__s), __fmt, __va_arg_pack ());
>       |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/test/fuse_workload.c:297:35:
>  warning: ‘/b/’ directive output may be truncated writing 3 bytes into a 
> region of size between 1 and 4096 [-Wformat-truncation=]
>   297 |     snprintf(tmp, sizeof(tmp), "%s/b/%d", base, i);
>       |                                   ^~~
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/test/fuse_workload.c:297:32:
>  note: directive argument in the range [0, 2]
>   297 |     snprintf(tmp, sizeof(tmp), "%s/b/%d", base, i);
>       |                                ^~~~~~~~~
> In file included from /usr/include/stdio.h:867,
>                  from 
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/expect.h:23,
>                  from 
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/test/fuse_workload.c:22:
> /usr/include/x86_64-linux-gnu/bits/stdio2.h:67:10: note: 
> ‘__builtin___snprintf_chk’ output between 5 and 4100 bytes into a destination 
> of size 4096
>    67 |   return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
>       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    68 |        __bos (__s), __fmt, __va_arg_pack ());
>       |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/test/fuse_workload.c:187:35:
>  warning: ‘/trunc.txt’ directive output may be truncated writing 10 bytes 
> into a region of size between 1 and 4096 [-Wformat-truncation=]
>   187 |   snprintf(path, sizeof(path), "%s/trunc.txt", base);
>       |                                   ^~~~~~~~~~
> In file included from /usr/include/stdio.h:867,
>                  from 
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/expect.h:23,
>                  from 
> /mnt/c/Users/Gautham/projects/apache/wsl/hadoop/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/test/fuse_workload.c:22:
> /usr/include/x86_64-linux-gnu/bits/stdio2.h:67:10: note: 
> ‘__builtin___snprintf_chk’ output between 11 and 4106 bytes into a 
> destination of size 4096
>    67 |   return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
>       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    68 |        __bos (__s), __fmt, __va_arg_pack ());
>       |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org

Reply via email to