我正在尝试在此C代码中找到队列的安全漏洞

时间:2012-02-06 15:16:33

标签: c security malloc

我知道malloc部分有一些可疑之处,但是我很难看到对此不安全的事情:

//que structure
typedef struct queue{
         int *que;  // the actual array of queue elements
         int head;   // the head index in que of the queue
         int count;  /// number of elements in queue
         int size; // max number of elements in queue
    } QUEUE;


void qManage(QUEUE **qptr, int flag, int size){
      if(flag){
              /* allocate a new queue */
              *qptr = malloc(sizeof(QUEUE));
              (*qptr)->head = (*qptr)->count = 0;
              (*qptr)->que = malloc(size * sizeof(int));
              (*qptr)->size = size;
    }
    else{
             /* delete the current queue */
             (void) free((*qptr)->que);
             (void) free(*qptr);
    }
}

1 个答案:

答案 0 :(得分:2)

我很确定这个问题: What happens if you pass a negative value for 'size'?

另一个可能的问题是你在分配后没有检查*qptr NULL,但是,在实际代码中很少会出现问题,如果它发生了,你还有其他错误担心。