soltools/mkdepend/main.c |    4 ++++
 1 file changed, 4 insertions(+)

New commits:
commit cb26710b6b40df59f34dd6a65988cd55e32153b0
Author:     Stephan Bergmann <[email protected]>
AuthorDate: Wed Dec 7 07:43:23 2022 +0100
Commit:     Stephan Bergmann <[email protected]>
CommitDate: Wed Dec 7 12:35:45 2022 +0000

    Check for failed malloc
    
    ...thereby silencing
    
    > In file included from /usr/include/features.h:490,
    >                  from /usr/include/bits/libc-header-start.h:33,
    >                  from /usr/include/stdio.h:27,
    >                  from soltools/mkdepend/def.h:40,
    >                  from soltools/mkdepend/main.c:58:
    > In function ‘read’,
    >     inlined from ‘main’ at soltools/mkdepend/main.c:197:28:
    > /usr/include/bits/unistd.h:38:10: error: ‘__read_alias’ specified size 
18446744073709551614 exceeds maximum object size 9223372036854775807 
[-Werror=stringop-overflow=]
    >    38 |   return __glibc_fortify (read, __nbytes, sizeof (char),
    >       |          ^~~~~~~~~~~~~~~
    > /usr/include/bits/unistd.h: In function ‘main’:
    > /usr/include/bits/unistd.h:26:16: note: in a call to function 
‘__read_alias’ declared with attribute ‘access (write_only, 2, 3)’
    >    26 | extern ssize_t __REDIRECT (__read_alias, (int __fd, void *__buf,
    >       |                ^~~~~~~~~~
    
    seen at least with -Wp,-D_FORTIFY_SOURCE=3 manually added to 
gb_COMPILEROPTFLAGS
    in an --enable-optimized build against recent GCC 13 trunk
    
    Change-Id: I9ca3c0ea8c579fffbdad52d7d39a4ce82085ddcd
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143760
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <[email protected]>

diff --git a/soltools/mkdepend/main.c b/soltools/mkdepend/main.c
index b8b84b453476..708d2c3b53dd 100644
--- a/soltools/mkdepend/main.c
+++ b/soltools/mkdepend/main.c
@@ -77,6 +77,7 @@ typedef _W64 int   ssize_t;
 #endif
 
 #include <stdarg.h>
+#include <stdlib.h>
 
 #ifdef MINIX
 #define USE_CHMOD   1
@@ -194,6 +195,9 @@ int main(int argc, char    **argv)
             fatalerr("cannot open \"%s\"\n", argv[1]+1);
         (void)fstat(afd, &ast);
         args = (char *)malloc(ast.st_size + 1);
+        if (args == NULL) {
+            abort();
+        }
         if ((ast.st_size = read(afd, args, (size_t) ast.st_size)) < 0)
             fatalerr("failed to read %s\n", argv[1]+1);
         args[ast.st_size] = '\0';

Reply via email to