/*************************************************************************** * Copyright (c) 2024 Microsoft Corporation * Copyright (c) 2026-present Eclipse ThreadX contributors * * This program and the accompanying materials are made available under the * terms of the MIT License which is available at * https://opensource.org/licenses/MIT. * * SPDX-License-Identifier: MIT **************************************************************************/ /**************************************************************************/ /**************************************************************************/ /** */ /** ThreadX Component */ /** */ /** Module */ /** */ /**************************************************************************/ /**************************************************************************/ #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 */ /* */ /* _txm_module_manager_object_pointer_get PORTABLE C */ /* 6.1.10 */ /* AUTHOR */ /* */ /* Scott Larson, Microsoft Corporation */ /* */ /* DESCRIPTION */ /* */ /* 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 */ /* */ /* object_type Type of object, as follows: */ /* */ /* TXM_BLOCK_POOL_OBJECT */ /* TXM_BYTE_POOL_OBJECT */ /* TXM_EVENT_FLAGS_OBJECT */ /* TXM_MUTEX_OBJECT */ /* TXM_QUEUE_OBJECT */ /* TXM_SEMAPHORE_OBJECT */ /* TXM_THREAD_OBJECT */ /* TXM_TIMER_OBJECT */ /* name Name to search for */ /* object_ptr Pointer to the object */ /* */ /* OUTPUT */ /* */ /* TX_SUCCESS Successful completion */ /* TX_PTR_ERROR Invalid name or object ptr */ /* TX_OPTION_ERROR Invalid option type */ /* TX_NO_INSTANCE Object not found */ /* */ /* CALLS */ /* */ /* _txm_module_kernel_call_dispatcher */ /* */ /* CALLED BY */ /* */ /* Module application code */ /* */ /**************************************************************************/ UINT _txm_module_object_pointer_get(UINT object_type, CHAR *name, VOID **object_ptr) { UINT return_value; /* Call module manager dispatcher. */ return_value = (UINT) (_txm_module_kernel_call_dispatcher)(TXM_MODULE_OBJECT_POINTER_GET_CALL, (ALIGN_TYPE) object_type, (ALIGN_TYPE) name, (ALIGN_TYPE) object_ptr); /* Return value to the caller. */ return(return_value); } #endif