curl / Mailing Lists / curl-library / Single Mail
Buy commercial curl support from WolfSSL. We help you work out your issues, debug your libcurl applications, use the API, port to new platforms, add new features and more. With a team lead by the curl founder himself.

Re: Non-constness of field "data" in "struct curl_blob" with setopt

From: Tomalak Geret'kal via curl-library <curl-library_at_cool.haxx.se>
Date: Mon, 22 Feb 2021 16:16:11 +0000

On 22/02/2021 15:21, Laurent Dufresne via curl-library wrote:
>
> Hi everyone,
>
>  
>
> Version 7.71.0 of libcurl added few more options to enable
> user to easily use Mutual TLS.
>
> Two of them, namely CURLOPT_SSLCERT_BLOB and
> CURLOPT_SSLKEY_BLOB, take a “struct curl_blob” as
> parameter and this structure has a pointer to the data
> with type “void *”.
>
> A very common case is to have a “const char *” that point
> to a PEM formatted string and in such case one would have
> to make a non-const copy to correctly/safely use the API.
>
Why? The data isn't going to be modified. Just cast to
`void*`. The `const` is erased just like the `char` is in
this particular use case.

I suppose there could have been a similar curl_const_blob
for cases like this, which might be a clearer design. Or
https://curl.se/libcurl/c/CURLOPT_SSLCERT_BLOB.html could be
enhanced to guarantee that the blob data is not altered.

> This is even more awkward when using “CURL_BLOB_COPY”,
> because the user would theoretically have to do a copy to
> a “char *” or “char[N]” to leverage the copy.
>
I don't follow this. If you want the data to be copied, you
set `CURL_BLOB_COPY` and the data is copied, using the
length you set in the blob. If you don't, don't. What do you
need to "leverage"?

Maybe I'm missing something...

Cheers



-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: https://curl.se/mail/etiquette.html
Received on 2021-02-22