Flagged txm_module_object_pointer_get as deprecated (#562)

Added #pragma message compile-time warning to the module library
source and updated the DESCRIPTION blocks in both the library and
manager implementations.

Reason: this wrapper passes UINT_MAX as the name-buffer length to
the underlying extended search. The comparison loop can therefore
read past the end of a short name buffer, which is undefined
behaviour. Callers should use txm_module_object_pointer_get_extended()
and supply the actual buffer length.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Frédéric Desbiens
2026-07-27 10:30:49 -04:00
committed by GitHub
co-authored by Copilot
parent 92ce0754ed
commit 190c4d6be4
2 changed files with 24 additions and 6 deletions
@@ -23,6 +23,22 @@
#define TXM_MODULE
#include "txm_module.h"
#ifndef TXM_MODULE_OBJECT_POINTER_GET_CALL_NOT_USED
/* DEPRECATION NOTICE
* txm_module_object_pointer_get() is deprecated. Do not use it in new code.
*
* WHY: this function passes UINT_MAX as the name-buffer length to the
* underlying search. If the name pointer points to a buffer shorter than
* the searched string, the comparison can read past the end of the buffer,
* which is undefined behaviour.
*
* WHAT TO DO: replace calls with txm_module_object_pointer_get_extended(),
* passing the actual length of the name buffer as the third argument.
*/
#pragma message("txm_module_object_pointer_get() is deprecated. " \
"Use txm_module_object_pointer_get_extended() and pass " \
"the actual name buffer length.")
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
@@ -35,9 +51,10 @@
/* */
/* DESCRIPTION */
/* */
/* This function is deprecated and calls the secure version of this */
/* function (_txm_module_manager_object_pointer_get_extended) with the */
/* maximum possible name length since none was passed. */
/* DEPRECATED. Use _txm_module_object_pointer_get_extended() instead, */
/* passing the actual name-buffer length. This wrapper passes */
/* UINT_MAX as the length, which can cause the name-comparison loop */
/* to read past the end of a short buffer (undefined behaviour). */
/* */
/* INPUT */
/* */
@@ -37,9 +37,10 @@
/* */
/* DESCRIPTION */
/* */
/* This function is deprecated and calls the secure version of this */
/* function (_txm_module_manager_object_pointer_get_extended) with the */
/* maximum possible name length since none was passed. */
/* DEPRECATED. Use _txm_module_manager_object_pointer_get_extended() */
/* instead, passing the actual name-buffer length. This wrapper */
/* passes UINT_MAX as the length, which can cause the name-comparison */
/* loop to read past the end of a short buffer (undefined behaviour). */
/* */
/* INPUT */
/* */