[rtems commit] gen_uuid.c: Fix two Unchecked return value from library errors

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Mar 24 07:31:47 UTC 2021


On 08/03/2021 21:56, Joel Sherrill wrote:

> Module:    rtems
> Branch:    master
> Commit:    597e4f476568a225d14dfaff02074cf269ad62ac
> Changeset:http://git.rtems.org/rtems/commit/?id=597e4f476568a225d14dfaff02074cf269ad62ac
>
> Author:    Ryan Long<ryan.long at oarcorp.com>
> Date:      Tue Mar  2 11:08:28 2021 -0500
>
> gen_uuid.c: Fix two Unchecked return value from library errors
>
> CID 1049146: Unchecked return value from library in get_clock().
> CID 1049147: Unchecked return value from library in get_random_fd().
>
> Closes #4280
>
> ---
>
>   cpukit/libmisc/uuid/gen_uuid.c | 11 ++++++++---
>   1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/cpukit/libmisc/uuid/gen_uuid.c b/cpukit/libmisc/uuid/gen_uuid.c
> index 3ca75a0..5bb34c0 100644
> --- a/cpukit/libmisc/uuid/gen_uuid.c
> +++ b/cpukit/libmisc/uuid/gen_uuid.c
> @@ -155,6 +155,7 @@ static int get_random_fd(void)
>   	struct timeval	tv;
>   	static int	fd = -2;
>   	int		i;
> +	int		sc;
>   
>   	if (fd == -2) {
>   		gettimeofday(&tv, 0);
> @@ -164,8 +165,10 @@ static int get_random_fd(void)
>   			fd = open("/dev/random", O_RDONLY | O_NONBLOCK);
>   		if (fd >= 0) {
>   			i = fcntl(fd, F_GETFD);
> -			if (i >= 0)
> -				fcntl(fd, F_SETFD, i | FD_CLOEXEC);
> +			if (i >= 0) {
> +				sc = fcntl(fd, F_SETFD, i | FD_CLOEXEC);
> +				_Assert_Unused_variable_unequal(sc, -1);
> +			}

FD_CLOEXEC is not supported by RTEMS. Do we even have these device files 
in RTEMS? This is 3rd-party code, what about upstream changes?

>   		}
>   #endif
>   		srand((getpid() << ((sizeof(pid_t)*CHAR_BIT)>>1)) ^ getuid() ^ tv.tv_sec ^ tv.tv_usec);
> @@ -334,6 +337,7 @@ static int get_clock(uint32_t *clock_high, uint32_t *clock_low,
>   	uint64_t			clock_reg;
>   	mode_t				save_umask;
>   	int				len;
> +	int				sc;
>   
>   	if (state_fd == -2) {
>   		save_umask = umask(0);
> @@ -426,7 +430,8 @@ try_again:
>   		}
>   		rewind(state_f);
>   		fl.l_type = F_UNLCK;
> -		fcntl(state_fd, F_SETLK, &fl);
> +		sc = fcntl(state_fd, F_SETLK, &fl);
> +		_Assert_Unused_variable_unequal(sc, -1);
F_SETLK is not supported by RTEMS.
>   	}
>   
>   	*clock_high = clock_reg >> 32;

The patch produces warnings like this:

../../../cpukit/libmisc/uuid/gen_uuid.c: In function 'get_clock':
../../../cpukit/libmisc/uuid/gen_uuid.c:434:3: warning: implicit 
declaration of function '_Assert_Unused_variable_unequal' 
[-Wimplicit-function-declaration]
   434 |   _Assert_Unused_variable_unequal(sc, -1);
       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../cpukit/libmisc/uuid/gen_uuid.c:434:3: warning: nested extern 
declaration of '_Assert_Unused_variable_unequal' [-Wnested-externs]

In total, how was this patch tested?

If you add _Assert() stuff, please build with RTEMS_DEBUG enabled and 
run the tests.

-- 
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber at embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/



More information about the devel mailing list