xref: /openbsd-src/lib/libutil/duid.c (revision 03c79f7043bd5ed1c012c9e29b356a759b071275)
1*03c79f70Snicm /* $OpenBSD: duid.c,v 1.2 2012/07/09 14:26:40 nicm Exp $ */
2*03c79f70Snicm 
3cf1d0975Sjsing /*
4cf1d0975Sjsing  * Copyright (c) 2010 Joel Sing <jsing@openbsd.org>
5cf1d0975Sjsing  *
6cf1d0975Sjsing  * Permission to use, copy, modify, and distribute this software for any
7cf1d0975Sjsing  * purpose with or without fee is hereby granted, provided that the above
8cf1d0975Sjsing  * copyright notice and this permission notice appear in all copies.
9cf1d0975Sjsing  *
10cf1d0975Sjsing  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11cf1d0975Sjsing  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12cf1d0975Sjsing  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13cf1d0975Sjsing  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14cf1d0975Sjsing  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15cf1d0975Sjsing  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16cf1d0975Sjsing  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17cf1d0975Sjsing  */
18cf1d0975Sjsing 
19cf1d0975Sjsing #include <string.h>
20cf1d0975Sjsing 
21cf1d0975Sjsing #include "util.h"
22cf1d0975Sjsing 
23cf1d0975Sjsing int
isduid(const char * duid,int dflags)24cf1d0975Sjsing isduid(const char *duid, int dflags)
25cf1d0975Sjsing {
26cf1d0975Sjsing 	char c;
27cf1d0975Sjsing 	int i;
28cf1d0975Sjsing 
29cf1d0975Sjsing 	/* Basic format check. */
30cf1d0975Sjsing 	if (!((strlen(duid) == 16 && (dflags & OPENDEV_PART)) ||
31cf1d0975Sjsing 	    (strlen(duid) == 18 && duid[16] == '.')))
32cf1d0975Sjsing 		return 0;
33cf1d0975Sjsing 
34cf1d0975Sjsing 	/* Check UID. */
35cf1d0975Sjsing 	for (i = 0; i < 16; i++) {
36cf1d0975Sjsing 		c = duid[i];
37cf1d0975Sjsing 		if ((c < '0' || c > '9') && (c < 'a' || c > 'f'))
38cf1d0975Sjsing 			return 0;
39cf1d0975Sjsing 	}
40cf1d0975Sjsing 
41cf1d0975Sjsing 	return 1;
42cf1d0975Sjsing }
43