git: 9940ac808de7 - main - elfctl: Fix type errors.

Konstantin Belousov kib at FreeBSD.org
Sat Jan 23 15:25:37 UTC 2021


The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=9940ac808de7b7d4ed0408c3e739f667dca06d3b

commit 9940ac808de7b7d4ed0408c3e739f667dca06d3b
Author:     Konstantin Belousov <kib at FreeBSD.org>
AuthorDate: 2021-01-23 10:45:51 +0000
Commit:     Konstantin Belousov <kib at FreeBSD.org>
CommitDate: 2021-01-23 15:24:32 +0000

    elfctl: Fix type errors.
    
    Target value for val has uint32_t type, not uint, adjust used constant.
    Change val type to unsigned so that left and right sides of comparision
    operator do not expose different signed types of same range [*].
    
    Switch to unsigned long long and strtoll(3) so that 0x80000000 is
    accepted by conversion function [**].
    
    Reported by:    kargl [*]
    Noted by:       emaste [**]
    Reviewed by:    emaste
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D28301
---
 usr.bin/elfctl/elfctl.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/usr.bin/elfctl/elfctl.c b/usr.bin/elfctl/elfctl.c
index 300a66eb516e..bcdd1be394a9 100644
--- a/usr.bin/elfctl/elfctl.c
+++ b/usr.bin/elfctl/elfctl.c
@@ -41,6 +41,7 @@
 #include <getopt.h>
 #include <libelf.h>
 #include <stdbool.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -249,13 +250,13 @@ convert_to_feature_val(char *feature_str, uint32_t *feature_val)
 		if (i == len) {
 			if (isdigit(feature[0])) {
 				char *eptr;
-				long val;
+				unsigned long long val;
 
 				errno = 0;
-				val = strtol(feature, &eptr, 0);
+				val = strtoll(feature, &eptr, 0);
 				if (eptr == feature || *eptr != '\0')
 					errno = EINVAL;
-				else if (val > UINT_MAX)
+				else if (val > UINT32_MAX)
 					errno = ERANGE;
 				if (errno != 0) {
 					warn("%s invalid", feature);


More information about the dev-commits-src-all mailing list