* nis/nis_domain_of_r.c (nis_domain_of_r): Add missing buffer
authorUlrich Drepper <drepper@redhat.com>
Wed, 24 May 2006 04:07:18 +0000 (04:07 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 24 May 2006 04:07:18 +0000 (04:07 +0000)
overflow test.

ChangeLog
nis/libnsl.h
nis/nis_call.c
nis/nis_domain_of_r.c
nis/nis_intern.h

index 52a54ea..518f2ca 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-23  Ulrich Drepper  <drepper@redhat.com>
+
+       * nis/nis_domain_of_r.c (nis_domain_of_r): Add missing buffer
+       overflow test.
+
 2006-05-20  Ulrich Drepper  <drepper@redhat.com>
 
        * nis/nis_call.c (__prepare_niscall): New function.  Split out
index eace582..c6ceb32 100644 (file)
@@ -29,6 +29,7 @@ extern int _nsl_default_nss (void);
 /* Set up everything for a call to __do_niscall3.  */
 extern nis_error __prepare_niscall (const_nis_name name, directory_obj **dirp,
                                    dir_binding *bptrp, unsigned int flags);
+libnsl_hidden_proto (__prepare_niscall)
 
 extern struct ib_request *__create_ib_request (const_nis_name name,
                                               unsigned int flags);
index bd6bcc5..9769f68 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "nis_xdr.h"
 #include "nis_intern.h"
+#include <libnsl.h>
 
 static const struct timeval RPCTIMEOUT = {10, 0};
 static const struct timeval UDPTIMEOUT = {5, 0};
@@ -293,6 +294,8 @@ __do_niscall3 (dir_binding *dbp, u_long prog, xdrproc_t xargs, caddr_t req,
 
   return retcode;
 }
+libnsl_hidden_def (__do_niscall3)
+
 
 nis_error
 __do_niscall2 (const nis_server *server, u_int server_len, u_long prog,
@@ -573,6 +576,7 @@ __prepare_niscall (const_nis_name name, directory_obj **dirp,
 
   return retcode;
 }
+libnsl_hidden_def (__prepare_niscall)
 
 
 nis_error
index 1fedcfe..e2db146 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 1997, 2004 Free Software Foundation, Inc.
+/* Copyright (c) 1997, 2004, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -29,6 +29,7 @@ nis_domain_of_r (const_nis_name name, char *buffer, size_t buflen)
 
   if (buffer == NULL)
     {
+    erange:
       __set_errno (ERANGE);
       return NULL;
     }
@@ -44,7 +45,11 @@ nis_domain_of_r (const_nis_name name, char *buffer, size_t buflen)
   cptr_len = strlen (cptr);
 
   if (cptr_len == 0)
-    return strcpy (buffer, ".");
+    {
+      if (buflen < 2)
+       goto erange;
+      return strcpy (buffer, ".");
+    }
 
   if (__builtin_expect (cptr_len >= buflen, 0))
     {
index 29a80a9..c805920 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (c) 1997,1998,1999,2000,2001,2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
 
@@ -66,6 +66,7 @@ extern nis_error __do_niscall3 (dir_binding *dbp, u_long prog,
                                xdrproc_t xargs, caddr_t req,
                                xdrproc_t xres, caddr_t resp,
                                unsigned int flags, nis_cb *cb);
+libnsl_hidden_proto (__do_niscall3)
 
 extern u_short __pmap_getnisport (struct sockaddr_in *address, u_long program,
                                  u_long version, u_int protocol);