When you say "allocating the main data structure", are you referring to the Run-Time Link Editor (rtl)? If so, rtems_rtl_data_init() is allocating memory for it. If it fails then rtems_rtl_data_init() returns false. Then, this causes rtems_rtl_lock() to return NULL.
-----Original Message----- From: Chris Johns <chr...@rtems.org> Sent: Tuesday, March 30, 2021 11:31 PM To: Gedare Bloom <ged...@rtems.org>; Ryan Long <ryan.l...@oarcorp.com> Cc: devel@rtems.org Subject: Re: [PATCH 1/2] rtl-obj.c: Added an early return if rtl lock fails On 31/3/21 4:08 am, Gedare Bloom wrote: > This looks ok. I'm wondering however if these rtems_rtl_lock () ever > should fail in practice, should it be an assert? Just wondering. Good question, I cannot remember. Maybe a better solution is to move to a statically allocated lock using the newer interface Sebastian has added and removing the check? However is the lock also allocating the main data structure and also returning the status of that? I do this as a way of not uses resources until the service is used. If that is the case the change maybe OK but the name of the call is a bit average. Ryan, are you able to take have a closer look. Thanks Chris > > On Tue, Mar 30, 2021 at 10:58 AM Ryan Long <ryan.l...@oarcorp.com> wrote: >> >> ping >> >> -----Original Message----- >> From: Ryan Long <ryan.l...@oarcorp.com> >> Sent: Monday, March 22, 2021 12:08 PM >> To: devel@rtems.org >> Cc: Ryan Long <ryan.l...@oarcorp.com> >> Subject: [PATCH 1/2] rtl-obj.c: Added an early return if rtl lock >> fails >> >> CID 1444138: Dereference null return value in rtems_rtl_obj_find_file(). >> >> Closes #4332 >> --- >> cpukit/libdl/rtl-obj.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/cpukit/libdl/rtl-obj.c b/cpukit/libdl/rtl-obj.c index >> a7dd740..d5a867e 100644 >> --- a/cpukit/libdl/rtl-obj.c >> +++ b/cpukit/libdl/rtl-obj.c >> @@ -409,6 +409,10 @@ rtems_rtl_obj_find_file (rtems_rtl_obj* obj, >> const char* name) >> >> rtl = rtems_rtl_lock (); >> >> + if (rtl == NULL) { >> + return false; >> + } >> + >> if (!rtems_rtl_find_file (pname, rtl->paths, &obj->fname, &obj->fsize)) >> { >> rtems_rtl_set_error (ENOENT, "file not found"); >> -- >> 1.8.3.1 >> >> _______________________________________________ >> devel mailing list >> devel@rtems.org >> http://lists.rtems.org/mailman/listinfo/devel > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel > _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel