Index: src/OFMutableString.m ================================================================== --- src/OFMutableString.m +++ src/OFMutableString.m @@ -523,10 +523,13 @@ const of_unichar_t *characters; const of_unichar_t *searchCharacters = [string characters]; size_t searchLength = [string length]; size_t replacementLength = [replacement length]; + if (string == nil || replacement == nil) + @throw [OFInvalidArgumentException exception]; + if (range.length > SIZE_MAX - range.location || range.location + range.length > [self length]) @throw [OFOutOfRangeException exception]; if (searchLength > range.length) { Index: src/OFMutableString_UTF8.m ================================================================== --- src/OFMutableString_UTF8.m +++ src/OFMutableString_UTF8.m @@ -593,10 +593,13 @@ { size_t start = range.location; size_t end = range.location + range.length; size_t newCStringLength, newLength; + if (replacement == nil) + @throw [OFInvalidArgumentException exception]; + if (range.length > SIZE_MAX - range.location || end > _s->length) @throw [OFOutOfRangeException exception]; newLength = _s->length - range.length + [replacement length]; @@ -651,10 +654,13 @@ size_t searchLength = [string UTF8StringLength]; size_t replacementLength = [replacement UTF8StringLength]; size_t last, newCStringLength, newLength; char *newCString; + if (string == nil || replacement == nil) + @throw [OFInvalidArgumentException exception]; + if (range.length > SIZE_MAX - range.location || range.location + range.length > [self length]) @throw [OFOutOfRangeException exception]; if (_s->isUTF8) {