xref: /freebsd/crypto/openssh/openbsd-compat/regress/strduptest.c (revision ce3adf4362fcca6a43e500b2531f0038adbfbd21)
1*ce3adf43SDag-Erling Smørgrav /*
2*ce3adf43SDag-Erling Smørgrav  * Copyright (c) 2005 Darren Tucker
3*ce3adf43SDag-Erling Smørgrav  *
4*ce3adf43SDag-Erling Smørgrav  * Permission to use, copy, modify, and distribute this software for any
5*ce3adf43SDag-Erling Smørgrav  * purpose with or without fee is hereby granted, provided that the above
6*ce3adf43SDag-Erling Smørgrav  * copyright notice and this permission notice appear in all copies.
7*ce3adf43SDag-Erling Smørgrav  *
8*ce3adf43SDag-Erling Smørgrav  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9*ce3adf43SDag-Erling Smørgrav  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10*ce3adf43SDag-Erling Smørgrav  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11*ce3adf43SDag-Erling Smørgrav  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12*ce3adf43SDag-Erling Smørgrav  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13*ce3adf43SDag-Erling Smørgrav  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14*ce3adf43SDag-Erling Smørgrav  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*ce3adf43SDag-Erling Smørgrav  */
16*ce3adf43SDag-Erling Smørgrav 
17*ce3adf43SDag-Erling Smørgrav #include <stdlib.h>
18*ce3adf43SDag-Erling Smørgrav #include <string.h>
19*ce3adf43SDag-Erling Smørgrav 
20*ce3adf43SDag-Erling Smørgrav static int fail = 0;
21*ce3adf43SDag-Erling Smørgrav 
22*ce3adf43SDag-Erling Smørgrav void
23*ce3adf43SDag-Erling Smørgrav test(const char *a)
24*ce3adf43SDag-Erling Smørgrav {
25*ce3adf43SDag-Erling Smørgrav 	char *b;
26*ce3adf43SDag-Erling Smørgrav 
27*ce3adf43SDag-Erling Smørgrav 	b = strdup(a);
28*ce3adf43SDag-Erling Smørgrav 	if (b == 0) {
29*ce3adf43SDag-Erling Smørgrav 		fail = 1;
30*ce3adf43SDag-Erling Smørgrav 		return;
31*ce3adf43SDag-Erling Smørgrav 	}
32*ce3adf43SDag-Erling Smørgrav 	if (strcmp(a, b) != 0)
33*ce3adf43SDag-Erling Smørgrav 		fail = 1;
34*ce3adf43SDag-Erling Smørgrav 	free(b);
35*ce3adf43SDag-Erling Smørgrav }
36*ce3adf43SDag-Erling Smørgrav 
37*ce3adf43SDag-Erling Smørgrav int
38*ce3adf43SDag-Erling Smørgrav main(void)
39*ce3adf43SDag-Erling Smørgrav {
40*ce3adf43SDag-Erling Smørgrav 	test("");
41*ce3adf43SDag-Erling Smørgrav 	test("a");
42*ce3adf43SDag-Erling Smørgrav 	test("\0");
43*ce3adf43SDag-Erling Smørgrav 	test("abcdefghijklmnopqrstuvwxyz");
44*ce3adf43SDag-Erling Smørgrav 	return fail;
45*ce3adf43SDag-Erling Smørgrav }
46