X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libatalk%2Facl%2Fuuid.c;h=7d6e7d620cf6ad0aaf554c814c9b0774e0ccc3d4;hb=b3c52ea7097b09cafe6002acca2c996f1f5ea2fb;hp=6df8d62b8b9ab0aae0c37adde0d150415a9d198f;hpb=15c1fc2f2328736dd428ec3be37c893d8ee2e065;p=netatalk.git diff --git a/libatalk/acl/uuid.c b/libatalk/acl/uuid.c index 6df8d62b..7d6e7d62 100644 --- a/libatalk/acl/uuid.c +++ b/libatalk/acl/uuid.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include "aclldap.h" @@ -76,8 +77,8 @@ void uuid_string2bin( const char *uuidstring, unsigned char *uuid) { int nibble = 1; int i = 0; unsigned char c, val = 0; - - while (*uuidstring) { + + while (*uuidstring && i < UUID_BINSIZE) { c = *uuidstring; if (c == '-') { uuidstring++; @@ -103,21 +104,30 @@ void uuid_string2bin( const char *uuidstring, unsigned char *uuid) { /*! * Convert 16 byte binary uuid to neat ascii represantation including dashes. - * + * Use defined or default ascii mask for dash placement * Returns pointer to static buffer. */ const char *uuid_bin2string(const unsigned char *uuid) { - static char uuidstring[UUID_STRINGSIZE + 1]; - + static char uuidstring[64]; + const char *uuidmask; int i = 0; unsigned char c; - while (i < UUID_STRINGSIZE) { +#ifdef HAVE_LDAP + if (ldap_uuid_string) + uuidmask = ldap_uuid_string; + else +#endif + uuidmask = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; + + LOG(log_debug, logtype_afpd, "uuid_bin2string{uuid}: mask: %s", uuidmask); + + while (i < strlen(uuidmask)) { c = *uuid; uuid++; sprintf(uuidstring + i, "%02X", c); i += 2; - if (i==8 || i==13 || i==18 || i==23) + if (uuidmask[i] == '-') uuidstring[i++] = '-'; } uuidstring[i] = 0;