Patch "ACPI: tools: pfrut: Check if the input of level and type is in the right numeric range" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ACPI: tools: pfrut: Check if the input of level and type is in the right numeric range

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     acpi-tools-pfrut-check-if-the-input-of-level-and-typ.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 406de9ced74f49bbfac384903542cb52af4aa567
Author: Chen Yu <yu.c.chen@xxxxxxxxx>
Date:   Wed Mar 8 21:23:09 2023 +0800

    ACPI: tools: pfrut: Check if the input of level and type is in the right numeric range
    
    [ Upstream commit 0bc23d8b2237a104d7f8379d687aa4cb82e2968b ]
    
    The user provides arbitrary non-numeic value to level and type,
    which could bring unexpected behavior. In this case the expected
    behavior would be to throw an error.
    
     pfrut -h
    usage: pfrut [OPTIONS]
    code injection:
    -l, --load
    -s, --stage
    -a, --activate
    -u, --update [stage and activate]
    -q, --query
    -d, --revid
    update telemetry:
    -G, --getloginfo
    -T, --type(0:execution, 1:history)
    -L, --level(0, 1, 2, 4)
    -R, --read
    -D, --revid log
    
     pfrut -T A
     pfrut -G
    log_level:0
    log_type:0
    log_revid:2
    max_data_size:65536
    chunk1_size:0
    chunk2_size:1530
    rollover_cnt:0
    reset_cnt:17
    
    Fix this by restricting the input to be in the expected range.
    
    Reported-by: Hariganesh Govindarajulu <hariganesh.govindarajulu@xxxxxxxxx>
    Suggested-by: "Rafael J. Wysocki" <rafael.j.wysocki@xxxxxxxxx>
    Signed-off-by: Chen Yu <yu.c.chen@xxxxxxxxx>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/tools/power/acpi/tools/pfrut/pfrut.c b/tools/power/acpi/tools/pfrut/pfrut.c
index 52aa0351533c3..388c9e3ad0407 100644
--- a/tools/power/acpi/tools/pfrut/pfrut.c
+++ b/tools/power/acpi/tools/pfrut/pfrut.c
@@ -97,7 +97,7 @@ static struct option long_options[] = {
 static void parse_options(int argc, char **argv)
 {
 	int option_index = 0;
-	char *pathname;
+	char *pathname, *endptr;
 	int opt;
 
 	pathname = strdup(argv[0]);
@@ -125,11 +125,23 @@ static void parse_options(int argc, char **argv)
 			log_getinfo = 1;
 			break;
 		case 'T':
-			log_type = atoi(optarg);
+			log_type = strtol(optarg, &endptr, 0);
+			if (*endptr || (log_type != 0 && log_type != 1)) {
+				printf("Number expected: type(0:execution, 1:history) - Quit.\n");
+				exit(1);
+			}
+
 			set_log_type = 1;
 			break;
 		case 'L':
-			log_level = atoi(optarg);
+			log_level = strtol(optarg, &endptr, 0);
+			if (*endptr ||
+			    (log_level != 0 && log_level != 1 &&
+			     log_level != 2 && log_level != 4)) {
+				printf("Number expected: level(0, 1, 2, 4) - Quit.\n");
+				exit(1);
+			}
+
 			set_log_level = 1;
 			break;
 		case 'R':



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux