[PATCH 5/9] console-tools: Replace ptrdiff_t with intptr_t in xioclt()

Steve Capper steve.capper at arm.com
Mon Apr 4 10:49:58 UTC 2022


From: Vincenzo Frascino <vincenzo.frascino at arm.com>

The use of ptrdiff_t can trigger a warning because a successive cast to
void * can generate a pointer that cannot be dereferenced.

Replace it with intptr_t that does not require provenance since being an
integer is always valid.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino at arm.com>
Reviewed-by: Steve Capper <steve.capper at arm.com>
Signed-off-by: Steve Capper <steve.capper at arm.com>
---
 console-tools/deallocvt.c | 2 +-
 console-tools/kbd_mode.c  | 2 +-
 console-tools/openvt.c    | 2 +-
 console-tools/showkey.c   | 4 ++--
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/console-tools/deallocvt.c b/console-tools/deallocvt.c
index 6cd54653c..0854cb58c 100644
--- a/console-tools/deallocvt.c
+++ b/console-tools/deallocvt.c
@@ -40,6 +40,6 @@ int deallocvt_main(int argc UNUSED_PARAM, char **argv)
 	}
 
 	/* double cast suppresses "cast to ptr from int of different size" */
-	xioctl(get_console_fd_or_die(), VT_DISALLOCATE, (void *)(ptrdiff_t)num);
+	xioctl(get_console_fd_or_die(), VT_DISALLOCATE, (void *)(intptr_t)num);
 	return EXIT_SUCCESS;
 }
diff --git a/console-tools/kbd_mode.c b/console-tools/kbd_mode.c
index b0b963ee0..6409d8c30 100644
--- a/console-tools/kbd_mode.c
+++ b/console-tools/kbd_mode.c
@@ -85,7 +85,7 @@ int kbd_mode_main(int argc UNUSED_PARAM, char **argv)
 		 */
 		opt = opt & UNICODE ? 3 : opt >> 1;
 		/* double cast prevents warnings about widening conversion */
-		xioctl(fd, KDSKBMODE, (void*)(ptrdiff_t)opt);
+		xioctl(fd, KDSKBMODE, (void*)(intptr_t)opt);
 	}
 
 	if (ENABLE_FEATURE_CLEAN_UP)
diff --git a/console-tools/openvt.c b/console-tools/openvt.c
index db2f073b2..b2a5f2a8f 100644
--- a/console-tools/openvt.c
+++ b/console-tools/openvt.c
@@ -191,7 +191,7 @@ int openvt_main(int argc UNUSED_PARAM, char **argv)
 			// Compat: even with -c N (try to) disallocate:
 			// # /usr/app/kbd-1.12/bin/openvt -f -c 9 -ws sleep 5
 			// openvt: could not deallocate console 9
-			xioctl(STDIN_FILENO, VT_DISALLOCATE, (void*)(ptrdiff_t)vtno);
+			xioctl(STDIN_FILENO, VT_DISALLOCATE, (void*)(intptr_t)vtno);
 		}
 	}
 	return EXIT_SUCCESS;
diff --git a/console-tools/showkey.c b/console-tools/showkey.c
index 84eb38a0a..786f943ba 100644
--- a/console-tools/showkey.c
+++ b/console-tools/showkey.c
@@ -103,7 +103,7 @@ int showkey_main(int argc UNUSED_PARAM, char **argv)
 		);
 
 		// set raw keyboard mode
-		xioctl(STDIN_FILENO, KDSKBMODE, (void *)(ptrdiff_t)((option_mask32 & OPT_k) ? K_MEDIUMRAW : K_RAW));
+		xioctl(STDIN_FILENO, KDSKBMODE, (void *)(intptr_t)((option_mask32 & OPT_k) ? K_MEDIUMRAW : K_RAW));
 
 		// we should exit on any signal; signals should interrupt read
 		bb_signals_norestart(BB_FATAL_SIGS, record_signo);
@@ -148,7 +148,7 @@ int showkey_main(int argc UNUSED_PARAM, char **argv)
 		}
 
 		// restore keyboard mode
-		xioctl(STDIN_FILENO, KDSKBMODE, (void *)(ptrdiff_t)kbmode);
+		xioctl(STDIN_FILENO, KDSKBMODE, (void *)(intptr_t)kbmode);
 	}
 
 	// restore console settings
-- 
2.35.1



More information about the busybox mailing list