Subject: Re: fixing PR bin/27145 -- yptest(8) core dumps
To: Peter Postma <peter@pointless.nl>
From: Jaromir Dolecek <jdolecek@NetBSD.org>
List: tech-userlevel
Date: 10/22/2004 17:01:02
Peter Postma wrote:
> Hello,
>
> The following patch fixes core dump from yptest(8) if yp(8) is not
> configured. Test 4 dumps core in printf if yp_master fails because Key2 is
> invalid (NULL).
> The patch also adds error messages for when the other tests fail.
>
> Is this ok to commit?
Looks fine.
Jaromir
>
> Index: yptest.c
> ===================================================================
> RCS file: /cvsroot/src/usr.sbin/ypserv/yptest/yptest.c,v
> retrieving revision 1.6
> diff -u -r1.6 yptest.c
> --- yptest.c 6 Jul 2002 00:47:55 -0000 1.6
> +++ yptest.c 22 Oct 2004 13:27:50 -0000
> @@ -72,11 +72,18 @@
> printf("Test 1: yp_match\n");
> KeyLen = strlen(Key);
> Status = yp_match(Domain, Map, Key, KeyLen, &Value, &ValLen);
> - printf("%*.*s\n", ValLen, ValLen, Value);
> + if (Status == 0)
> + printf("%*.*s\n", ValLen, ValLen, Value);
> + else
> + fprintf(stderr, "yp error: %s\n", yperr_string(Status));
>
> printf("\nTest 2: yp_first\n");
> Status = yp_first(Domain, Map, &Key2, &KeyLen, &Value, &ValLen);
> - printf("%*.*s %*.*s\n", KeyLen, KeyLen, Key2, ValLen, ValLen, Value);
> + if (Status == 0)
> + printf("%*.*s %*.*s\n", KeyLen, KeyLen, Key2, ValLen, ValLen,
> + Value);
> + else
> + fprintf(stderr, "yp error: %s\n", yperr_string(Status));
>
> printf("\nTest 3: yp_next\n");
> while (Status == 0) {
> @@ -85,15 +92,23 @@
> if (Status == 0)
> printf("%*.*s %*.*s\n", KeyLen, KeyLen, Key2,
> ValLen, ValLen, Value);
> + else
> + fprintf(stderr, "yp error: %s\n", yperr_string(Status));
> }
>
> printf("\nTest 4: yp_master\n");
> Status = yp_master(Domain, Map, &Key2);
> - printf("%s\n", Key2);
> + if (Status == 0)
> + printf("%s\n", Key2);
> + else
> + fprintf(stderr, "yp error: %s\n", yperr_string(Status));
>
> printf("\nTest 5: yp_order\n");
> Status = yp_order(Domain, Map, &Order);
> - printf("%d\n", Order);
> + if (Status == 0)
> + printf("%d\n", Order);
> + else
> + fprintf(stderr, "yp error: %s\n", yperr_string(Status));
>
> printf("\nTest 6: yp_maplist\n");
> ypml = NULL;
> @@ -104,11 +119,18 @@
> printf("%s\n", ypml->ypml_name);
> y = ypml->ypml_next;
> }
> + break;
> + default:
> + fprintf(stderr, "yp error: %s\n", yperr_string(Status));
> + break;
> }
>
> printf("\nTest 7: yp_all\n");
> Callback.foreach = yptest_foreach;
> Status = yp_all(Domain, Map, &Callback);
> + if (Status != 0)
> + fprintf(stderr, "yp error: %s\n", yperr_string(Status));
> +
> exit(0);
> }
>
>
> --
> Peter Postma
>
--
Jaromir Dolecek <jdolecek@NetBSD.org> http://www.NetBSD.cz/
-=- We should be mindful of the potential goal, but as the Buddhist -=-
-=- masters say, ``You may notice during meditation that you -=-
-=- sometimes levitate or glow. Do not let this distract you.'' -=-