fix nullptr deref in devoptab_list

This commit is contained in:
ITotalJustice 2025-09-05 19:23:10 +01:00
parent b5cdec82b7
commit 2b1442db43
3 changed files with 31 additions and 10 deletions

View File

@ -7966,14 +7966,15 @@ index 000000000..5e81c5d42
+#endif
diff --git a/libgloss/libsysbase/iosupport.c b/libgloss/libsysbase/iosupport.c
new file mode 100644
index 000000000..71224902f
index 000000000..021b1a6b6
--- /dev/null
+++ b/libgloss/libsysbase/iosupport.c
@@ -0,0 +1,138 @@
@@ -0,0 +1,145 @@
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/iosupport.h>
+#include <assert.h>
+
+static int defaultDevice = -1;
+
@ -8025,13 +8026,19 @@ index 000000000..71224902f
+};
+
+//---------------------------------------------------------------------------------
+const devoptab_t *devoptab_list[STD_MAX] = {
+const devoptab_t *devoptab_list[] = {
+//---------------------------------------------------------------------------------
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull
+};
+static_assert(STD_MAX == sizeof(devoptab_list) / sizeof(devoptab_list[0]));
+
+//---------------------------------------------------------------------------------
+int FindDevice(const char* name) {

View File

@ -7966,14 +7966,15 @@ index 000000000..5e81c5d42
+#endif
diff --git a/libgloss/libsysbase/iosupport.c b/libgloss/libsysbase/iosupport.c
new file mode 100644
index 000000000..71224902f
index 000000000..84d14d56f
--- /dev/null
+++ b/libgloss/libsysbase/iosupport.c
@@ -0,0 +1,138 @@
@@ -0,0 +1,145 @@
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/iosupport.h>
+#include <assert.h>
+
+static int defaultDevice = -1;
+
@ -8030,8 +8031,14 @@ index 000000000..71224902f
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull
+};
+static_assert(STD_MAX == sizeof(devoptab_list) / sizeof(devoptab_list[0]));
+
+//---------------------------------------------------------------------------------
+int FindDevice(const char* name) {

View File

@ -7916,14 +7916,15 @@ index 000000000..5e81c5d42
+#endif
diff --git a/libgloss/libsysbase/iosupport.c b/libgloss/libsysbase/iosupport.c
new file mode 100644
index 000000000..71224902f
index 000000000..84d14d56f
--- /dev/null
+++ b/libgloss/libsysbase/iosupport.c
@@ -0,0 +1,138 @@
@@ -0,0 +1,145 @@
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/iosupport.h>
+#include <assert.h>
+
+static int defaultDevice = -1;
+
@ -7980,8 +7981,14 @@ index 000000000..71224902f
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull, &dotab_stdnull,
+ &dotab_stdnull, &dotab_stdnull, &dotab_stdnull
+};
+static_assert(STD_MAX == sizeof(devoptab_list) / sizeof(devoptab_list[0]));
+
+//---------------------------------------------------------------------------------
+int FindDevice(const char* name) {