X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/b1ab9ed8d0e0f1c3b66d7daa8fd5564444c56195..420ff9d9379a8d93f2c90f026a797bdea1eb4517:/libsecurity_utilities/lib/blob.cpp?ds=inline diff --git a/libsecurity_utilities/lib/blob.cpp b/libsecurity_utilities/lib/blob.cpp index b0dab75f..04be864e 100644 --- a/libsecurity_utilities/lib/blob.cpp +++ b/libsecurity_utilities/lib/blob.cpp @@ -114,15 +114,19 @@ BlobCore *BlobCore::readBlob(std::FILE *file, uint32_t magic, size_t minSize, si BlobWrapper *BlobWrapper::alloc(size_t length, Magic magic /* = _magic */) { size_t wrapLength = length + sizeof(BlobCore); + if (wrapLength < length) // overflow + return NULL; BlobWrapper *w = (BlobWrapper *)malloc(wrapLength); - w->BlobCore::initialize(magic, wrapLength); + if (w) + w->BlobCore::initialize(magic, wrapLength); return w; } BlobWrapper *BlobWrapper::alloc(const void *data, size_t length, Magic magic /* = _magic */) { BlobWrapper *w = alloc(length, magic); - memcpy(w->data(), data, w->length()); + if (w) + memcpy(w->data(), data, w->length()); return w; }