X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/e3d460c9de4426da6c630c3ae3f46173a99f82d8..000f55fd2f6b3f7217715c0b319b6af746005756:/OSX/libsecurity_cdsa_utilities/lib/cssmaclpod.cpp diff --git a/OSX/libsecurity_cdsa_utilities/lib/cssmaclpod.cpp b/OSX/libsecurity_cdsa_utilities/lib/cssmaclpod.cpp index 347971db..e80d7213 100644 --- a/OSX/libsecurity_cdsa_utilities/lib/cssmaclpod.cpp +++ b/OSX/libsecurity_cdsa_utilities/lib/cssmaclpod.cpp @@ -216,11 +216,12 @@ uint32 pinFromAclTag(const char *tag, const char *suffix /* = NULL */) if (tag) { char format[20]; snprintf(format, sizeof(format), "PIN%%d%s%%n", suffix ? suffix : ""); - uint32 pin; - unsigned consumed; - sscanf(tag, format, &pin, &consumed); - if (consumed == strlen(tag)) // complete and sufficient + uint32 pin = 0; + unsigned consumed = 0; + // sscanf does not count %n as a filled value so number of read variables should be just 1 + if (sscanf(tag, format, &pin, &consumed) == 1 && consumed == strlen(tag)) { // complete and sufficient return pin; + } } return 0; }