(linenum→info "unix/slp.c:2238")

glibc/2.7/nis/nis_domain_of_r.c

    1: /* Copyright (c) 1997, 2004, 2006 Free Software Foundation, Inc.
    2:    This file is part of the GNU C Library.
    3:    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
    4: 
    5:    The GNU C Library is free software; you can redistribute it and/or
    6:    modify it under the terms of the GNU Lesser General Public
    7:    License as published by the Free Software Foundation; either
    8:    version 2.1 of the License, or (at your option) any later version.
    9: 
   10:    The GNU C Library is distributed in the hope that it will be useful,
   11:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   12:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   13:    Lesser General Public License for more details.
   14: 
   15:    You should have received a copy of the GNU Lesser General Public
   16:    License along with the GNU C Library; if not, write to the Free
   17:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   18:    02111-1307 USA.  */
   19: 
   20: #include <errno.h>
   21: #include <string.h>
   22: #include <rpcsvc/nis.h>
   23: 
   24: nis_name
   25: nis_domain_of_r (const_nis_name name, char *buffer, size_t buflen)
   26: {
   27:   char *cptr;
   28:   size_t cptr_len;
   29: 
   30:   if (buffer == NULL)
   31:     {
   32:     erange:
   33:       __set_errno (ERANGE);
   34:       return NULL;
   35:     }
   36: 
   37:   buffer[0] = '\0';
   38: 
   39:   cptr = strchr (name, '.');
   40: 
   41:   if (cptr == NULL)
   42:     return buffer;
   43: 
   44:   ++cptr;
   45:   cptr_len = strlen (cptr);
   46: 
   47:   if (cptr_len == 0)
   48:     {
   49:       if (buflen < 2)
   50:         goto erange;
   51:       return strcpy (buffer, ".");
   52:     }
   53: 
   54:   if (__builtin_expect (cptr_len >= buflen, 0))
   55:     {
   56:       __set_errno (ERANGE);
   57:       return NULL;
   58:     }
   59: 
   60:   return memcpy (buffer, cptr, cptr_len + 1);
   61: }
   62: libnsl_hidden_def (nis_domain_of_r)
Syntax (Markdown)