diff options
author | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2017-09-29 09:08:59 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2018-02-19 15:29:35 +0100 |
commit | 344633626c9c497a61d975f22f83f227934b4c21 (patch) | |
tree | f7b42ea918cb53141747f90103580a9ae4fd2965 /lib/str.c | |
parent | 8c107a11041c6a093dca78fd159f88dbfb307bbc (diff) | |
download | gnutls-344633626c9c497a61d975f22f83f227934b4c21.tar.gz |
buf: _gnutls_buffer_pop_data made easier to use
Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
Diffstat (limited to 'lib/str.c')
-rw-r--r-- | lib/str.c | 17 |
1 files changed, 8 insertions, 9 deletions
@@ -280,24 +280,23 @@ int _gnutls_buffer_to_datum(gnutls_buffer_st * str, gnutls_datum_t * data, unsig return ret; } -/* returns data from a string in a constant buffer. +/* returns data from a string in a constant buffer. Will + * fail with GNUTLS_E_PARSING_ERROR, if the string has not enough data. */ -void +int _gnutls_buffer_pop_data(gnutls_buffer_st * str, void *data, - size_t * req_size) + size_t req_size) { gnutls_datum_t tdata; - _gnutls_buffer_pop_datum(str, &tdata, *req_size); - if (tdata.data == NULL) { - *req_size = 0; - return; + _gnutls_buffer_pop_datum(str, &tdata, req_size); + if (tdata.data == NULL || tdata.size != req_size) { + return GNUTLS_E_PARSING_ERROR; } - *req_size = tdata.size; memcpy(data, tdata.data, tdata.size); - return; + return 0; } int |