From f5d759ea3b53f178ee331cc50e02a44ea088300a Mon Sep 17 00:00:00 2001 From: Devin Gillman Date: Sun, 28 Aug 2022 08:51:47 -0500 Subject: [PATCH] RemoteDesktop: Application Crashes when Missing SSH Port Addresses https://dev.haiku-os.org/ticket/14640 * Fixed parameter validation logic. Change-Id: I9b208d251a74a6024bb621eed4a7d5b167f4ff32 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5596 Tested-by: Commit checker robot Reviewed-by: waddlesplash Reviewed-by: Adrien Destugues --- src/apps/remotedesktop/RemoteDesktop.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/apps/remotedesktop/RemoteDesktop.cpp b/src/apps/remotedesktop/RemoteDesktop.cpp index 0ed18d8d5e..5a9f64209b 100644 --- a/src/apps/remotedesktop/RemoteDesktop.cpp +++ b/src/apps/remotedesktop/RemoteDesktop.cpp @@ -60,8 +60,7 @@ main(int argc, char *argv[]) for (int32 i = 2; i < argc; i++) { if (strcmp(argv[i], "-p") == 0) { - if (argc < i + 1 || sscanf(argv[i + 1], "%" B_SCNu16, &port) - != 1) { + if (argc <= i + 1 || sscanf(argv[i + 1], "%" B_SCNu16, &port) != 1) { print_usage(argv[0]); return 2; } @@ -71,8 +70,7 @@ main(int argc, char *argv[]) } if (strcmp(argv[i], "-w") == 0) { - if (argc < i + 1 || sscanf(argv[i + 1], "%" B_SCNd32, &width) != 1) - { + if (argc <= i + 1 || sscanf(argv[i + 1], "%" B_SCNd32, &width) != 1) { print_usage(argv[0]); return 2; } @@ -82,8 +80,7 @@ main(int argc, char *argv[]) } if (strcmp(argv[i], "-h") == 0) { - if (argc < i + 1 || sscanf(argv[i + 1], "%" B_SCNd32, &height) != 1) - { + if (argc <= i + 1 || sscanf(argv[i + 1], "%" B_SCNd32, &height) != 1) { print_usage(argv[0]); return 2; } @@ -93,17 +90,18 @@ main(int argc, char *argv[]) } if (strcmp(argv[i], "-s") == 0) { - if (argc >= i + 1 - && sscanf(argv[i + 1], "%" B_SCNu16, &sshPort) == 1) { - i++; + if (argc <= i + 1 || sscanf(argv[i + 1], "%" B_SCNu16, &sshPort) != 1) { + print_usage(argv[0]); + return 2; } + i++; useSSH = true; continue; } if (strcmp(argv[i], "-c") == 0) { - if (argc < i + 1) { + if (argc <= i + 1) { print_usage(argv[0]); return 2; }