From 96c7d69308cb42e50dd3d1ce79252f124e40613e Mon Sep 17 00:00:00 2001 From: lukem Date: Sun, 25 Jul 1999 07:59:48 +0000 Subject: [PATCH] fix up lossage WRT free()ing invalid pointers. noted in [bin/8064] --- usr.sbin/ypserv/makedbm/makedbm.c | 32 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/usr.sbin/ypserv/makedbm/makedbm.c b/usr.sbin/ypserv/makedbm/makedbm.c index 80f6a263d052..9b7f569a685e 100644 --- a/usr.sbin/ypserv/makedbm/makedbm.c +++ b/usr.sbin/ypserv/makedbm/makedbm.c @@ -1,4 +1,4 @@ -/* $NetBSD: makedbm.c,v 1.15 1999/06/07 03:06:08 mrg Exp $ */ +/* $NetBSD: makedbm.c,v 1.16 1999/07/25 07:59:48 lukem Exp $ */ /* * Copyright (c) 1994 Mats O Jansson @@ -33,7 +33,7 @@ #include #ifndef lint -__RCSID("$NetBSD: makedbm.c,v 1.15 1999/06/07 03:06:08 mrg Exp $"); +__RCSID("$NetBSD: makedbm.c,v 1.16 1999/07/25 07:59:48 lukem Exp $"); #endif #include @@ -296,26 +296,22 @@ create_database(infile, database, yp_input_file, yp_output_file, for (; (p = fparseln(data_file, &len, &line_no, NULL, FPARSELN_UNESCALL)); free(p)) { - while (*p && isspace(*p)) /* skip leading whitespace */ - p++; + k = p; /* set start of key */ + while (*k && isspace(*k)) /* skip leading whitespace */ + k++; - if (! *p) + if (! *k) continue; - k = p; /* save start of key */ - while (*p && !isspace(*p)) { /* find whitespace */ - /* Convert to lower case if forcing. */ - if (lflag && isupper(*p)) - *p = tolower(*p); - p++; - } - if (! *p) - v = ""; /* no value found - use "" */ - else { - while (isspace(*p)) /* replace space with */ - *p++ = '\0'; - v = p; /* save start of value */ + v = k; + while (*v && !isspace(*v)) { /* find leading whitespace */ + /* convert key to lower case if forcing. */ + if (lflag && isupper(*v)) + *v = tolower(*v); + v++; } + while (*v && isspace(*v)) /* replace space with */ + *v++ = '\0'; if (add_record(new_db, k, v, TRUE)) { /* save record */ bad_record: