mirror of
https://github.com/libssh2/libssh2.git
synced 2026-10-24 03:48:58 +03:00
libssh2_userauth_keyboard_interactive_ex.md: fix allocator requirement
Prior to this patch, the documentation stated that the `.text` buffers filled by the API caller are "free(3)d" by libssh2, referring to the default system deallocator. In reality however, libssh2 was using `SSH2_FREE*()` to free these buffers, respecting custom allocators, if set by the user via `libssh2_session_init_ex()`. libssh2 behaved this way since the initial implementation committed inda653774aa2005-06-11, v0.11 Later, examples were added that use `strdup()` to allocate, which was (and is) accurate because they do not use a custom allocator:9a1ce06e312007-07-22 Then, when the documentation landed, it incorrectly documented `free(3)`, perhaps basing it on the examples added earlier:d4aa801f6f2008-03-08 I assume that callers overriding the custom allocators are more likely to have fixed their code to adhere with how libssh2 actually behaved, rather than believing the documentation and live with an allocator mismatch for all these years. Therefore I think this is a documentation error, and this patch addresses this. Reported-by: Makise Kurisu Fixes GHSA-p6p8-66vc-3f24 Revertsce631aafe1#2659 Follow-up tod4aa801f6fFollow-up toda653774aaCloses #2661
This commit is contained in:
@@ -36,11 +36,12 @@ for.
|
||||
*username_len* - Length of username parameter.
|
||||
|
||||
*response_callback* - As authentication proceeds, the host issues several
|
||||
(1 or more) challenges and requires responses. This callback is called at
|
||||
this moment. The callback is responsible to obtain responses for the
|
||||
challenges, fill the provided data structure and then return
|
||||
control. Responses are sent to the host. String values are free(3)ed
|
||||
by the library. The callback prototype must match this:
|
||||
(1 or more) challenges and requires responses. This callback is called at this
|
||||
moment. The callback is responsible to obtain responses for the challenges,
|
||||
fill the provided data structure and then return control. Use the custom
|
||||
LIBSSH2_ALLOC_FUNC (or, if not set, the default system allocator) to allocate
|
||||
memory for the `text` field. Responses are sent to the host. The callback
|
||||
prototype must match this:
|
||||
|
||||
~~~c
|
||||
void response(const char *name,
|
||||
|
||||
@@ -218,14 +218,14 @@ typedef off_t libssh2_struct_stat_size;
|
||||
#endif
|
||||
typedef struct _LIBSSH2_USERAUTH_KBDINT_PROMPT
|
||||
{
|
||||
unsigned char *text; /* FIXME: require LIBSSH2_ALLOC_FUNC */
|
||||
unsigned char *text;
|
||||
size_t length;
|
||||
unsigned char echo;
|
||||
} LIBSSH2_USERAUTH_KBDINT_PROMPT;
|
||||
|
||||
typedef struct _LIBSSH2_USERAUTH_KBDINT_RESPONSE
|
||||
{
|
||||
char *text; /* FIXME: require LIBSSH2_ALLOC_FUNC */
|
||||
char *text;
|
||||
unsigned int length; /* FIXME: change type to size_t */
|
||||
} LIBSSH2_USERAUTH_KBDINT_RESPONSE;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user