瀏覽代碼

stb_vorbis: Add missing error checks in comment reading mallocs

Backported from https://github.com/nothings/stb/pull/989.

Fixes #40164.
Rémi Verschelde 5 年之前
父節點
當前提交
24a01c0d39
共有 1 個文件被更改,包括 3 次插入0 次删除
  1. 3 0
      thirdparty/misc/stb_vorbis.c

+ 3 - 0
thirdparty/misc/stb_vorbis.c

@@ -3630,6 +3630,7 @@ static int start_decoder(vorb *f)
    //file vendor
    //file vendor
    len = get32_packet(f);
    len = get32_packet(f);
    f->vendor = (char*)setup_malloc(f, sizeof(char) * (len+1));
    f->vendor = (char*)setup_malloc(f, sizeof(char) * (len+1));
+   if (f->vendor == NULL)                           return error(f, VORBIS_outofmem);
    for(i=0; i < len; ++i) {
    for(i=0; i < len; ++i) {
       f->vendor[i] = get8_packet(f);
       f->vendor[i] = get8_packet(f);
    }
    }
@@ -3637,10 +3638,12 @@ static int start_decoder(vorb *f)
    //user comments
    //user comments
    f->comment_list_length = get32_packet(f);
    f->comment_list_length = get32_packet(f);
    f->comment_list = (char**)setup_malloc(f, sizeof(char*) * (f->comment_list_length));
    f->comment_list = (char**)setup_malloc(f, sizeof(char*) * (f->comment_list_length));
+   if (f->comment_list == NULL)                     return error(f, VORBIS_outofmem);
 
 
    for(i=0; i < f->comment_list_length; ++i) {
    for(i=0; i < f->comment_list_length; ++i) {
       len = get32_packet(f);
       len = get32_packet(f);
       f->comment_list[i] = (char*)setup_malloc(f, sizeof(char) * (len+1));
       f->comment_list[i] = (char*)setup_malloc(f, sizeof(char) * (len+1));
+      if (f->comment_list[i] == NULL)               return error(f, VORBIS_outofmem);
 
 
       for(j=0; j < len; ++j) {
       for(j=0; j < len; ++j) {
          f->comment_list[i][j] = get8_packet(f);
          f->comment_list[i][j] = get8_packet(f);