This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Hi, I have added a patch for glibc 2.1 and 2.2, which adds some checks if malloc fails and return with an error in this case. Thorsten -- Thorsten Kukuk http://www.suse.de/~kukuk/ kukuk@suse.de SuSE GmbH Schanzaeckerstr. 10 90443 Nuernberg Linux is like a Vorlon. It is incredibly powerful, gives terse, cryptic answers and has a lot of things going on in the background.
2000-03-16 Thorsten Kukuk <kukuk@suse.de> * nis/nss_nis/nis-ethers.c: Return with error if malloc fails. * nis/nss_compat/compat-initgroups.c: Likewise. * nis/nss_nis/nis-initgroups.c: Likewise. * nis/nss_nis/nis-netgrp.c: Likewise. * nis/nss_nis/nis-proto.c: Likewise. * nis/nss_nis/nis-rpc.c: Likewise. * nis/nss_nis/nis-service.c: Likewise. * nis/ypclnt.c: Likewise. --- nis/nss_compat/compat-initgroups.c +++ nis/nss_compat/compat-initgroups.c 2000/02/24 14:06:07 @@ -1,6 +1,6 @@ -/* Copyright (C) 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998. + Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -93,15 +93,21 @@ if (intern->start == NULL) { intern->start = malloc (sizeof (struct response_t)); + if (intern->start == NULL) + return YP_FALSE; intern->next = intern->start; } else { intern->next->next = malloc (sizeof (struct response_t)); + if (intern->next->next == NULL) + return YP_FALSE; intern->next = intern->next->next; } intern->next->next = NULL; intern->next->val = malloc (invallen + 1); + if (intern->next->val == NULL) + return YP_FALSE; strncpy (intern->next->val, inval, invallen); intern->next->val[invallen] = '\0'; } --- nis/nss_nis/nis-ethers.c +++ nis/nss_nis/nis-ethers.c 2000/02/24 14:06:07 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996. @@ -64,15 +64,21 @@ if (start == NULL) { start = malloc (sizeof (struct response)); + if (start == NULL) + return YP_FALSE; next = start; } else { next->next = malloc (sizeof (struct response)); + if (next->next == NULL) + return YP_FALSE; next = next->next; } next->next = NULL; next->val = malloc (invallen + 1); + if (next->val == NULL) + return YP_FALSE; strncpy (next->val, inval, invallen); next->val[invallen] = '\0'; } --- nis/nss_nis/nis-initgroups.c +++ nis/nss_nis/nis-initgroups.c 2000/02/24 14:06:07 @@ -1,6 +1,6 @@ -/* Copyright (C) 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998. + Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -61,15 +61,21 @@ if (intern->start == NULL) { intern->start = malloc (sizeof (struct response_t)); + if (intern->start == NULL) + return YP_FALSE; intern->next = intern->start; } else { intern->next->next = malloc (sizeof (struct response_t)); + if (intern->next->next == NULL) + return YP_FALSE; intern->next = intern->next->next; } intern->next->next = NULL; intern->next->val = malloc (invallen + 1); + if (intern->next->val == NULL) + return YP_FALSE; strncpy (intern->next->val, inval, invallen); intern->next->val[invallen] = '\0'; } --- nis/nss_nis/nis-netgrp.c +++ nis/nss_nis/nis-netgrp.c 2000/02/24 14:06:07 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996. @@ -74,9 +74,8 @@ &result, &len)); if (status == NSS_STATUS_SUCCESS) { - if (len > 0) + if (len > 0 && (data = malloc (len + 1)) != NULL) { - data = malloc (len + 1); data_size = len; cursor = strncpy (data, result, len + 1); data[len] = '\0'; --- nis/nss_nis/nis-proto.c +++ nis/nss_nis/nis-proto.c 2000/02/24 14:06:07 @@ -1,6 +1,6 @@ -/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996. + Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -56,15 +56,21 @@ if (start == NULL) { start = malloc (sizeof (struct response)); + if (start == NULL) + return YP_FALSE; next = start; } else { next->next = malloc (sizeof (struct response)); + if (next->next == NULL) + return YP_FALSE; next = next->next; } next->next = NULL; next->val = malloc (invallen + 1); + if (next->val == NULL) + return YP_FALSE; strncpy (next->val, inval, invallen); next->val[invallen] = '\0'; } --- nis/nss_nis/nis-rpc.c +++ nis/nss_nis/nis-rpc.c 2000/02/24 14:06:07 @@ -1,6 +1,6 @@ -/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996. + Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -64,15 +64,21 @@ if (intern->start == NULL) { intern->start = malloc (sizeof (struct response_t)); + if (intern->start == NULL) + return YP_FALSE; intern->next = intern->start; } else { intern->next->next = malloc (sizeof (struct response_t)); + if (intern->next->next == NULL) + return YP_FALSE; intern->next = intern->next->next; } intern->next->next = NULL; intern->next->val = malloc (invallen + 1); + if (intern->next->val == NULL) + return YP_FALSE; strncpy (intern->next->val, inval, invallen); intern->next->val[invallen] = '\0'; } --- nis/nss_nis/nis-service.c +++ nis/nss_nis/nis-service.c 2000/02/24 14:06:07 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996. @@ -65,15 +65,21 @@ if (intern->start == NULL) { intern->start = malloc (sizeof (struct response_t)); + if (intern->start == NULL) + return YP_FALSE; /* We have no error code for out of memory */ intern->next = intern->start; } else { intern->next->next = malloc (sizeof (struct response_t)); + if (intern->next->next == NULL) + return YP_FALSE; /* We have no error code for out of memory */ intern->next = intern->next->next; } intern->next->next = NULL; intern->next->val = malloc (invallen + 1); + if (intern->next->val == NULL) + return YP_FALSE; /* We have no error code for out of memory */ strncpy (intern->next->val, inval, invallen); intern->next->val[invallen] = '\0'; } --- nis/ypclnt.c +++ nis/ypclnt.c 2000/02/24 14:06:08 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996. @@ -80,6 +80,8 @@ { is_new = 1; ysd = (dom_binding *) calloc (1, sizeof *ysd); + if (ysd == NULL) + return YPERR_RESRC; } #if USE_BINDINGDIR @@ -445,6 +447,8 @@ *outvallen = resp.val.valdat_len; *outval = malloc (*outvallen + 1); + if (*outval == NULL) + return YPERR_RESRC; memcpy (*outval, resp.val.valdat_val, *outvallen); (*outval)[*outvallen] = '\0'; @@ -483,10 +487,14 @@ *outkeylen = resp.key.keydat_len; *outkey = malloc (*outkeylen + 1); + if (*outkey == NULL) + return YPERR_RESRC; memcpy (*outkey, resp.key.keydat_val, *outkeylen); (*outkey)[*outkeylen] = '\0'; *outvallen = resp.val.valdat_len; *outval = malloc (*outvallen + 1); + if (*outval == NULL) + return YPERR_RESRC; memcpy (*outval, resp.val.valdat_val, *outvallen); (*outval)[*outvallen] = '\0'; @@ -529,10 +537,14 @@ *outkeylen = resp.key.keydat_len; *outkey = malloc (*outkeylen + 1); + if (*outkey == NULL) + return YPERR_RESRC; memcpy (*outkey, resp.key.keydat_val, *outkeylen); (*outkey)[*outkeylen] = '\0'; *outvallen = resp.val.valdat_len; *outval = malloc (*outvallen + 1); + if (*outval == NULL) + return YPERR_RESRC; memcpy (*outval, resp.val.valdat_val, *outvallen); (*outval)[*outvallen] = '\0';
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |