Correct size check in _gnutls_buffer_pop_data() ?
Shouldn't it be if (tdata.data == NULL || tdata.size > req_size) {
?
/* returns data from a string in a constant buffer. Will
* fail with GNUTLS_E_PARSING_ERROR, if the string has not enough data.
*/
int
_gnutls_buffer_pop_data(gnutls_buffer_st * str, void *data,
size_t req_size)
{
gnutls_datum_t tdata;
_gnutls_buffer_pop_datum(str, &tdata, req_size);
if (tdata.data == NULL || tdata.size != req_size) {
return GNUTLS_E_PARSING_ERROR;
}
memcpy(data, tdata.data, tdata.size);
return 0;
}
Edited by Tim Rühsen