]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Replace poison memset by memset_s to avoid compiler optimizing it out
authorFlole998 <Flole998@users.noreply.github.com>
Sun, 18 Feb 2024 23:02:30 +0000 (23:02 +0000)
committerFlole998 <Flole998@users.noreply.github.com>
Tue, 20 Feb 2024 21:17:05 +0000 (22:17 +0100)
src/input/mpegts/mpegts_table.c
src/tvheadend.h

index dd88aaca0d4cd5c98d5bccf324ed611b321cacec..3f7380db639f3a6ee160d4f1fb303954e023793f 100644 (file)
@@ -115,6 +115,7 @@ mpegts_table_dispatch
 void
 mpegts_table_release_ ( mpegts_table_t *mt )
 {
+  int mt_size = sizeof(*mt);
   dvb_table_release((mpegts_psi_table_t *)mt);
   tvhtrace(LS_MPEGTS, "table: mux %p free %s %02X/%02X (%d) pid %04X (%d)",
            mt->mt_mux, mt->mt_name, mt->mt_table, mt->mt_mask, mt->mt_table,
@@ -127,7 +128,14 @@ mpegts_table_release_ ( mpegts_table_t *mt )
   tprofile_done(&mt->mt_profile);
   if (tvhtrace_enabled()) {
     /* poison */
-    memset(mt, 0xa5, sizeof(*mt));
+    #ifdef __STDC_LIB_EXT1__
+    memset_s(mt, sizeof(*mt), 0xa5, sizeof(*mt));
+    #else
+    volatile unsigned char *p = (unsigned char*)mt;
+    while (mt_size--){
+      *p++ = 0xa5;
+    }
+    #endif
   }
   free(mt);
 }
index 7a6aa820b68fe1f665869dd50757070c6887fcaf..23f58cbd95bec591e0b85fa8f199da28114445fc 100644 (file)
@@ -18,6 +18,8 @@
 #ifndef TVHEADEND_H
 #define TVHEADEND_H
 
+#define __STDC_WANT_LIB_EXT1__ 1
+
 #include "build.h"
 
 #include <stdlib.h>