Params API: {utf8,octet}_ptr need to know the data size
When the purpose is to pass parameters to a setter function, that setter function needs to know the size of the data passed. This remains true for the pointer data types as well. Reviewed-by: Paul Dale <paul.dale@oracle.com> (Merged from https://github.com/openssl/openssl/pull/8703)
This commit is contained in:
parent
b926f9deb3
commit
f55ed701a4
5 changed files with 22 additions and 15 deletions
|
@ -580,15 +580,15 @@ int OSSL_PARAM_set_octet_ptr(const OSSL_PARAM *p, const void *val,
|
|||
}
|
||||
|
||||
OSSL_PARAM OSSL_PARAM_construct_utf8_ptr(const char *key, char **buf,
|
||||
size_t *rsize)
|
||||
size_t bsize, size_t *rsize)
|
||||
{
|
||||
return ossl_param_construct(key, OSSL_PARAM_UTF8_PTR, buf, 0, rsize);
|
||||
return ossl_param_construct(key, OSSL_PARAM_UTF8_PTR, buf, bsize, rsize);
|
||||
}
|
||||
|
||||
OSSL_PARAM OSSL_PARAM_construct_octet_ptr(const char *key, void **buf,
|
||||
size_t *rsize)
|
||||
size_t bsize, size_t *rsize)
|
||||
{
|
||||
return ossl_param_construct(key, OSSL_PARAM_OCTET_PTR, buf, 0, rsize);
|
||||
return ossl_param_construct(key, OSSL_PARAM_OCTET_PTR, buf, bsize, rsize);
|
||||
}
|
||||
|
||||
OSSL_PARAM OSSL_PARAM_construct_end(void)
|
||||
|
|
|
@ -44,9 +44,9 @@ OSSL_PARAM_set_octet_ptr
|
|||
OSSL_PARAM OSSL_PARAM_construct_octet_string(const char *key, void *buf,
|
||||
size_t bsize, size_t *rsize);
|
||||
OSSL_PARAM OSSL_PARAM_construct_utf8_ptr(const char *key, char **buf,
|
||||
size_t *rsize);
|
||||
size_t bsize, size_t *rsize);
|
||||
OSSL_PARAM OSSL_PARAM_construct_octet_ptr(const char *key, void **buf,
|
||||
size_t *rsize);
|
||||
size_t bsize, size_t *rsize);
|
||||
OSSL_PARAM OSSL_PARAM_construct_end(void);
|
||||
|
||||
OSSL_PARAM *OSSL_PARAM_locate(OSSL_PARAM *array, const char *key);
|
||||
|
@ -173,13 +173,13 @@ size B<rsize> is created.
|
|||
|
||||
OSSL_PARAM_construct_utf8_ptr() is a function that constructes a UTF string
|
||||
pointer OSSL_PARAM structure.
|
||||
A parameter with name B<key>, storage pointer B<*buf> and return size B<rsize>
|
||||
is created.
|
||||
A parameter with name B<key>, storage pointer B<*buf>, size B<bsize> and
|
||||
return size B<rsize> is created.
|
||||
|
||||
OSSL_PARAM_construct_octet_ptr() is a function that constructes an OCTET string
|
||||
pointer OSSL_PARAM structure.
|
||||
A parameter with name B<key>, storage pointer B<*buf> and return size B<rsize>
|
||||
is created.
|
||||
A parameter with name B<key>, storage pointer B<*buf>, size B<bsize> and
|
||||
return size B<rsize> is created.
|
||||
|
||||
OSSL_PARAM_construct_end() is a function that constructs the terminating
|
||||
OSSL_PARAM structure.
|
||||
|
@ -254,6 +254,13 @@ Integral types will be widened and sign extended as required.
|
|||
Apart from that, the functions must be used appropriately for the
|
||||
expected type of the parameter.
|
||||
|
||||
For OSSL_PARAM_get_utf8_ptr() and OSSL_PARAM_get_octet_ptr(), B<bsize>
|
||||
is not relevant if the purpose is to send the B<OSSL_PARAM> array to a
|
||||
I<responder>, i.e. to get parameter data back.
|
||||
In that case, B<bsize> can safely be given zero.
|
||||
See L<OSSL_PARAM(3)/DESCRIPTION> for further information on the
|
||||
possible purposes.
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
Reusing the examples from L<OSSL_PARAM(3)> to just show how
|
||||
|
|
|
@ -132,11 +132,11 @@ OSSL_PARAM OSSL_PARAM_construct_double(const char *key, double *buf,
|
|||
OSSL_PARAM OSSL_PARAM_construct_utf8_string(const char *key, char *buf,
|
||||
size_t bsize, size_t *rsize);
|
||||
OSSL_PARAM OSSL_PARAM_construct_utf8_ptr(const char *key, char **buf,
|
||||
size_t *rsize);
|
||||
size_t bsize, size_t *rsize);
|
||||
OSSL_PARAM OSSL_PARAM_construct_octet_string(const char *key, void *buf,
|
||||
size_t bsize, size_t *rsize);
|
||||
OSSL_PARAM OSSL_PARAM_construct_octet_ptr(const char *key, void **buf,
|
||||
size_t *rsize);
|
||||
size_t bsize, size_t *rsize);
|
||||
OSSL_PARAM OSSL_PARAM_construct_end(void);
|
||||
|
||||
int OSSL_PARAM_get_int(const OSSL_PARAM *p, int *val);
|
||||
|
|
|
@ -475,8 +475,8 @@ static int test_param_construct(void)
|
|||
&sz);
|
||||
params[n++] = OSSL_PARAM_construct_octet_string("octstr", buf, sizeof(buf),
|
||||
&sz);
|
||||
params[n++] = OSSL_PARAM_construct_utf8_ptr("utf8ptr", &bufp, &sz);
|
||||
params[n++] = OSSL_PARAM_construct_octet_ptr("octptr", &vp, &sz);
|
||||
params[n++] = OSSL_PARAM_construct_utf8_ptr("utf8ptr", &bufp, 0, &sz);
|
||||
params[n++] = OSSL_PARAM_construct_octet_ptr("octptr", &vp, 0, &sz);
|
||||
params[n] = OSSL_PARAM_construct_end();
|
||||
|
||||
/* Search failure */
|
||||
|
|
|
@ -400,7 +400,7 @@ static OSSL_PARAM *construct_api_params(void)
|
|||
params[n++] = OSSL_PARAM_construct_utf8_string("p5", app_p5,
|
||||
sizeof(app_p5), &app_p5_l);
|
||||
params[n++] = OSSL_PARAM_construct_utf8_ptr("p6", (char **)&app_p6,
|
||||
&app_p6_l);
|
||||
sizeof(app_p6), &app_p6_l);
|
||||
params[n++] = OSSL_PARAM_construct_octet_string("foo", &foo, sizeof(foo),
|
||||
&foo_l);
|
||||
params[n++] = OSSL_PARAM_construct_end();
|
||||
|
|
Loading…
Reference in a new issue