]> Savannah Git Hosting - gnulib.git/commitdiff
savedir: avoid undefined behavior in qsort call
authorPádraig Brady <P@draigBrady.com>
Wed, 24 Jun 2015 18:08:08 +0000 (19:08 +0100)
committerPádraig Brady <P@draigBrady.com>
Thu, 25 Jun 2015 01:35:59 +0000 (02:35 +0100)
GCC 5.1.1 -fsanitize=undefined with glibc 2.21 is returning:
"runtime error: null pointer passed as argument 1,
 which is declared to never be null"
* lib/savedir.c (streamsavedir): Avoid the call with no entries.

ChangeLog
lib/savedir.c

index 1a8d095cf3acefb1fa1771510d34904fb1eabbfc..ef313402c7083cb9a29045575451ab54ed530ee5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2015-06-24  Pádraig Brady  <P@draigBrady.com>
+
+       savedir: avoid undefined behavior in qsort call
+       GCC 5.1.1 -fsanitize=undefined with glibc 2.21 is returning:
+       "runtime error: null pointer passed as argument 1,
+        which is declared to never be null"
+       * lib/savedir.c (streamsavedir): Avoid the call with no entries.
+
 2015-06-24  Pádraig Brady  <P@draigBrady.com>
 
        userspec: avoid undefined behavior in gettext call
index 3af555ac3eb3af8655d30ce2e4fa794212209927..61b0fa3ca86c82d2ac4525f5d8be6bebf42b3c42 100644 (file)
@@ -161,7 +161,8 @@ streamsavedir (DIR *dirp, enum savedir_option option)
     {
       size_t i;
 
-      qsort (entries, entries_used, sizeof *entries, cmp);
+      if (entries_used)
+        qsort (entries, entries_used, sizeof *entries, cmp);
       name_space = xmalloc (used + 1);
       used = 0;
       for (i = 0; i < entries_used; i++)