diff --git a/lib/pkcs12/p12local.c b/lib/pkcs12/p12local.c --- a/lib/pkcs12/p12local.c +++ b/lib/pkcs12/p12local.c @@ -923,17 +923,18 @@ sec_pkcs12_convert_item_to_unicode(PLAre if(!arena) { PORT_Free(dest->data); dest->data = NULL; dest->len = 0; } return PR_FALSE; } - if((dest->data[dest->len-1] || dest->data[dest->len-2]) && zeroTerm) { + if ((dest->len >= 2) && + (dest->data[dest->len-1] || dest->data[dest->len-2]) && zeroTerm) { if(dest->len + 2 > 3 * src->len) { if(arena) { dest->data = (unsigned char*)PORT_ArenaGrow(arena, dest->data, dest->len, dest->len + 2); } else { dest->data = (unsigned char*)PORT_Realloc(dest->data, dest->len + 2);