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
- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]
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
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