@@ -33,10 +33,11 @@ #import "OFSystemInfo.h" #import "OFInitializationFailedException.h" #import "OFInvalidFormatException.h" #import "OFMalformedXMLException.h" +#import "OFOutOfRangeException.h" #import "OFUnboundPrefixException.h" typedef void (*state_function_t)(id, SEL); static SEL selectors[OF_XMLPARSER_NUM_STATES]; static state_function_t lookupTable[OF_XMLPARSER_NUM_STATES]; @@ -102,16 +103,20 @@ static OFString* namespaceForPrefix(OFString *prefix, OFArray *namespaces) { OFDictionary *const *objects = [namespaces objects]; + size_t count = [namespaces count]; ssize_t i; if (prefix == nil) prefix = @""; - for (i = [namespaces count] - 1; i >= 0; i--) { + if (count - 1 > SSIZE_MAX) + @throw [OFOutOfRangeException exception]; + + for (i = count - 1; i >= 0; i--) { OFString *tmp; if ((tmp = [objects[i] objectForKey: prefix]) != nil) return tmp; }