]> git.ipfire.org Git - thirdparty/glibc.git/blame - inet/getnetgrent.c
malloc: Check for large bin list corruption when inserting unsorted chunk
[thirdparty/glibc.git] / inet / getnetgrent.c
CommitLineData
04277e02 1/* Copyright (C) 1996-2019 Free Software Foundation, Inc.
01c901a5 2 This file is part of the GNU C Library.
d68171ed 3
01c901a5 4 The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
d68171ed 8
01c901a5
UD
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2 12 Lesser General Public License for more details.
d68171ed 13
41bdb6e2 14 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
15 License along with the GNU C Library; if not, see
16 <http://www.gnu.org/licenses/>. */
d68171ed 17
1cab5444 18#include <errno.h>
a68b0d31 19#include <netdb.h>
1cab5444 20#include <stdlib.h>
ec999b8e 21#include <libc-lock.h>
d68171ed 22
c877418f
RM
23/* Static buffer for return value. We allocate it when needed. */
24libc_freeres_ptr (static char *buffer);
1cab5444
UD
25/* All three strings should fit in a block of 1kB size. */
26#define BUFSIZE 1024
27
28
29
30static void
31allocate (void)
32{
33 buffer = (char *) malloc (BUFSIZE);
34}
d68171ed 35
d68171ed 36int
a68b0d31 37getnetgrent (char **hostp, char **userp, char **domainp)
d68171ed 38{
1cab5444
UD
39 __libc_once_define (static, once);
40 __libc_once (once, allocate);
41
42 if (buffer == NULL)
43 {
44 __set_errno (ENOMEM);
45 return -1;
46 }
d68171ed 47
1cab5444 48 return __getnetgrent_r (hostp, userp, domainp, buffer, BUFSIZE);
d68171ed 49}