* nscd/Makefile (nscd-cflags): Add _FORTIFY_SOURCE.
authorUlrich Drepper <drepper@redhat.com>
Mon, 18 Jul 2005 22:28:46 +0000 (22:28 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 18 Jul 2005 22:28:46 +0000 (22:28 +0000)
* nscd/connections.c: Fix a few wur warnings.

ChangeLog
nscd/Makefile
nscd/connections.c

index 8233e5f..a134451 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2005-07-18  Ulrich Drepper  <drepper@redhat.com>
 
+       * nscd/Makefile (nscd-cflags): Add _FORTIFY_SOURCE.
+
+       * nscd/connections.c: Fix a few wur warnings.
+
        * nscd/grpcache.c (cache_addgr): Use correct maximum for group ID
        length.  Patch by Ivan Gyurdiev <ivg2@cornell.edu>.
 
index 2ebd90b..4b6f296 100644 (file)
@@ -84,7 +84,7 @@ CFLAGS-nscd_gethst_r.c = -fexceptions
 CFLAGS-nscd_getai.c = -fexceptions
 CFLAGS-nscd_initgroups.c = -fexceptions
 
-nscd-cflags = -DIS_IN_nscd=1
+nscd-cflags = -DIS_IN_nscd=1 -D_FORTIFY_SOURCE=2
 ifeq (yesyes,$(have-fpie)$(build-shared))
 nscd-cflags += -fpie
 endif
index 9dc852a..347862e 100644 (file)
@@ -393,20 +393,23 @@ cannot create read-only descriptor for \"%s\"; no mmap"),
                if (offset % ps != 0)
                  {
                    towrite = MIN (remaining, ps - (offset % ps));
-                   pwrite (fd, tmpbuf, towrite, offset);
+                   if (pwrite (fd, tmpbuf, towrite, offset) != towrite)
+                     goto write_fail;
                    offset += towrite;
                    remaining -= towrite;
                  }
 
                while (remaining > ps)
                  {
-                   pwrite (fd, tmpbuf, ps, offset);
+                   if (pwrite (fd, tmpbuf, ps, offset) == -1)
+                     goto write_fail;
                    offset += ps;
                    remaining -= ps;
                  }
 
-               if (remaining > 0)
-                 pwrite (fd, tmpbuf, remaining, offset);
+               if (remaining > 0
+                   && pwrite (fd, tmpbuf, remaining, offset) != remaining)
+                 goto write_fail;
 
                /* Create the header of the file.  */
                struct database_pers_head head =
@@ -426,6 +429,7 @@ cannot create read-only descriptor for \"%s\"; no mmap"),
                    || (mem = mmap (NULL, total, PROT_READ | PROT_WRITE,
                                    MAP_SHARED, fd, 0)) == MAP_FAILED)
                  {
+                 write_fail:
                    unlink (dbs[cnt].db_filename);
                    dbg_log (_("cannot write to database file %s: %s"),
                             dbs[cnt].db_filename, strerror (errno));
@@ -965,7 +969,9 @@ cannot change to old working directory: %s; disabling paranoia mode"),
       setuid (server_uid);
       setgid (server_gid);
     }
-  chdir ("/");
+  if (chdir ("/") != 0)
+    dbg_log (_("cannot change current working directory to \"/\": %s"),
+            strerror (errno));
   paranoia = 0;
 }