aboutsummaryrefslogtreecommitdiff
path: root/nss/nss_files
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-01-23 22:17:17 +0000
committerUlrich Drepper <drepper@redhat.com>1999-01-23 22:17:17 +0000
commit4caef86ca68a3fea8fab5398bedc5e0e6c0d222b (patch)
tree4ed5e6e23fb6d99df8761dc425adbb91405915fb /nss/nss_files
parent8831788577cda2e19e27e6f1a793339abb9711fa (diff)
downloadglibc-4caef86ca68a3fea8fab5398bedc5e0e6c0d222b.tar
glibc-4caef86ca68a3fea8fab5398bedc5e0e6c0d222b.tar.gz
glibc-4caef86ca68a3fea8fab5398bedc5e0e6c0d222b.tar.bz2
glibc-4caef86ca68a3fea8fab5398bedc5e0e6c0d222b.zip
Update.
1999-01-23 Ulrich Drepper <drepper@cygnus.com> * nss/nss_files/files-XXX.c (internal_getent): Make sure the buffer has at least two bytes (not one). Correct buflen parameter type. * nss/nss_files/files-alias.c (get_next_alias): Make sure buffer has at least two bytes. Use fgets_unlocked instead of fgets. * ctype/ctype.h: Don't user __tolower directly for tolower implementation. Use inline function which tests for the range first. Make _tolower equivalent to old tolower macros. Likewise for toupper. * ctype/ctype.c: Change tolower/toupper definition accordingly. * argp/argp-help.c: Use _tolower instead of tolower if possible. * inet/ether_aton_r.c: Likewise. * inet/ether_line.c: Likewise. * inet/rcmd.c: Likewise. * intl/l10nflist.c: Likewise. * locale/programs/ld-collate.c: Likewise. * locale/programs/linereader.c: Likewise. * locale/programs/localedef.c: Likewise. * nis/nss_nis/nis-alias.c: Likewise. * nis/nss_nis/nis-network.c: Likewise. * posix/regex.c: Likewise. * resolv/inet_net_pton.c: Likewise. * stdio-common/printf_fp.c: Likewise. * stdio-common/vfscanf.c: Likewise. * sysdeps/generic/strcasestr.c: Likewise. * math/bits/mathcalls.h: Fix typo.
Diffstat (limited to 'nss/nss_files')
-rw-r--r--nss/nss_files/files-XXX.c6
-rw-r--r--nss/nss_files/files-alias.c14
2 files changed, 13 insertions, 7 deletions
diff --git a/nss/nss_files/files-XXX.c b/nss/nss_files/files-XXX.c
index c1f3c4e4e2..f4f2f2ce68 100644
--- a/nss/nss_files/files-XXX.c
+++ b/nss/nss_files/files-XXX.c
@@ -1,5 +1,5 @@
/* Common code for file-based databases in nss_files module.
- Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1998, 1999 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
@@ -162,14 +162,14 @@ CONCAT(_nss_files_end,ENTNAME) (void)
static enum nss_status
internal_getent (struct STRUCTURE *result,
- char *buffer, int buflen, int *errnop H_ERRNO_PROTO)
+ char *buffer, size_t buflen, int *errnop H_ERRNO_PROTO)
{
char *p;
struct parser_data *data = (void *) buffer;
int linebuflen = buffer + buflen - data->linebuffer;
int parse_result;
- if (buflen < (int) sizeof *data + 1)
+ if (buflen < sizeof *data + 2)
{
*errnop = ERANGE;
H_ERRNO_SET (NETDB_INTERNAL);
diff --git a/nss/nss_files/files-alias.c b/nss/nss_files/files-alias.c
index b18361f66c..b9bba9cb8f 100644
--- a/nss/nss_files/files-alias.c
+++ b/nss/nss_files/files-alias.c
@@ -1,5 +1,5 @@
/* Mail alias file parser in nss_files module.
- Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -148,10 +148,15 @@ get_next_alias (const char *match, struct aliasent *result,
size_t room_left = buflen - (buflen % __alignof__ (char *));
char *line;
+ /* Check whether the buffer is large enough for even trying to
+ read something. */
+ if (room_left < 2)
+ goto no_more_room;
+
/* Read the first line. It must contain the alias name and
possibly some alias names. */
first_unused[room_left - 1] = '\xff';
- line = fgets (first_unused, room_left, stream);
+ line = fgets_unlocked (first_unused, room_left, stream);
if (line == NULL)
/* Nothing to read. */
break;
@@ -245,7 +250,8 @@ get_next_alias (const char *match, struct aliasent *result,
while (! feof (listfile))
{
first_unused[room_left - 1] = '\xff';
- line = fgets (first_unused, room_left, listfile);
+ line = fgets_unlocked (first_unused, room_left,
+ listfile);
if (line == NULL)
break;
if (first_unused[room_left - 1] != '\xff')
@@ -345,7 +351,7 @@ get_next_alias (const char *match, struct aliasent *result,
/* The just read character is a white space and so
can be ignored. */
first_unused[room_left - 1] = '\xff';
- line = fgets (first_unused, room_left, stream);
+ line = fgets_unlocked (first_unused, room_left, stream);
if (first_unused[room_left - 1] != '\xff')
goto no_more_room;
cp = strpbrk (line, "#\n");