[PATCH] Make /etc/default/nss reading errno preserving

Jakub Jelinek jakub@redhat.com
Tue Jul 3 13:20:00 GMT 2007


Hi!

_nsl_default_nss is called indirectly even from functions which should
preserve errno in certain cases (e.g. getpwent if it returns NULL
should only set errno in case of error).  But presence of /etc/default/nss
or lack thereof should not be considered an error.

2007-07-03  Jakub Jelinek  <jakub@redhat.com>

	[BZ #4702]
	* nis/nss-default.c: Include errno.h.
	(init): Preserve errno.

--- libc/nis/nss-default.c.jj	2006-04-28 23:03:17.000000000 +0200
+++ libc/nis/nss-default.c	2007-07-03 14:59:57.000000000 +0200
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 2001, 2004, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 2001, 2004, 2006, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -17,6 +17,7 @@
    02111-1307 USA.  */
 
 #include <ctype.h>
+#include <errno.h>
 #include <stdio.h>
 #include <stdio_ext.h>
 #include <stdlib.h>
@@ -54,6 +55,7 @@ static const struct
 static void
 init (void)
 {
+  int saved_errno = errno;
   FILE *fp = fopen (default_nss, "rc");
   if (fp != NULL)
     {
@@ -111,6 +113,7 @@ init (void)
 
       fclose (fp);
     }
+  __set_errno (saved_errno);
 }
 
 

	Jakub



More information about the Libc-hacker mailing list