Procházet zdrojové kódy

* Align pack data to 16 byte boundary as well

Bryan Drewery před 14 roky
rodič
revize
3dd72828e3
3 změnil soubory, kde provedl 16 přidání a 4 odebrání
  1. 1 1
      src/binary.c
  2. 10 1
      src/main.c
  3. 5 2
      src/settings.h

+ 1 - 1
src/binary.c

@@ -50,7 +50,7 @@
 settings_t settings = {
   SETTINGS_HEADER,
   /* -- STATIC -- */
-  "", "", "", "", "", "", "", "", "",
+  "", "", "", "", "", "", "", "", "", "",
   /* -- DYNAMIC -- */
   "", "", "", "", "", "", "", "", "", "",
   /* -- PADDING */

+ 10 - 1
src/main.c

@@ -429,7 +429,16 @@ static void dtx_arg(int& argc, char *argv[])
         printf(STR("BuildOS: %s%s%s BuildArch: %s%s%s\n"), BOLD(-1), BUILD_OS, BOLD_END(-1), BOLD(-1), BUILD_ARCH, BOLD_END(-1));
         printf(STR("- http://wraith.botpack.net -\n"));
 #ifdef DEBUG
-	printf(STR("pack: %zu conf: %zu settings_t: %zu prefix: %zu pad: %zu needed padding: %zu\n"), SIZE_PACK, SIZE_CONF, sizeof(settings_t), PREFIXLEN, SIZE_PAD, (16 - ((sizeof(settings_t) - sizeof(settings.padding)) % 16)) % 16);
+	printf(STR("pack: %zu conf: %zu settings_t: %zu prefix: %zu pad: %zu/%zu needed padding: %zu/%zu\n"),
+            SIZE_PACK,
+            SIZE_CONF,
+            SIZE_SETTINGS,
+            PREFIXLEN,
+            SIZE_PAD_PACK,
+            SIZE_PAD,
+            (SIZE_PAD_ALIGN - ((SIZE_PACK - SIZE_PAD_PACK) % SIZE_PAD_ALIGN)) % SIZE_PAD_ALIGN,
+            (SIZE_PAD_ALIGN - ((SIZE_SETTINGS - SIZE_PAD) % SIZE_PAD_ALIGN)) % SIZE_PAD_ALIGN
+        );
 #endif
         if (settings.dynamic_initialized[0]) {
           bin_to_conf();

+ 5 - 2
src/settings.h

@@ -23,6 +23,7 @@ typedef struct settings_struct {
   char salt2[17];
   char dcc_prefix[17];
   char features[17];
+  char pack_padding[7];
   /* -- DYNAMIC -- */
   char dynamic_initialized[17];
   char conf_hubs[513];
@@ -35,7 +36,7 @@ typedef struct settings_struct {
   char portmin[17];       /* for hubs, the reserved port range for incoming connections */
   char portmax[17];       /* for hubs, the reserved port range for incoming connections */
   /* -- PADDING -- */
-  char padding[13];        // (16 - (sizeof(settings_t) % 16)) % 16]
+  char padding[6];        // (16 - (sizeof(settings_t) % 16)) % 16]
 } settings_t;
 
 #define SALT1 {s1_1[0],s1_1[1],s1_5[0],s1_5[1],s1_8[0],s1_8[1],s1_4[0],s1_9[1],s1_2[0],s1_13[0],s1_6[0],s1_6[1],s1_7[0],s1_7[1],s1_3[0],s1_13[1],s1_16[1],s1_4[1],s1_15[0],s1_10[1],s1_14[0],s1_14[1],s1_12[0],s1_12[1],s1_2[1],s1_3[1],s1_11[0],s1_11[1],s1_10[0],s1_15[1],s1_16[0],s1_9[0],'\0'}
@@ -48,14 +49,16 @@ extern char s1_3[3],s1_2[3],s1_1[3],s2_7[3],s1_9[3],s1_13[3],s1_14[3],s2_2[3],s1
 
 #define SIZE_PACK sizeof(settings.hash) + sizeof(settings.packname) + sizeof(settings.shellhash) + \
 sizeof(settings.owners) + sizeof(settings.hubs) + \
-sizeof(settings.salt1) + sizeof(settings.salt2) + sizeof(settings.dcc_prefix) + sizeof(settings.features)
+sizeof(settings.salt1) + sizeof(settings.salt2) + sizeof(settings.dcc_prefix) + sizeof(settings.features) + sizeof(settings.pack_padding)
 
 #define SIZE_CONF sizeof(settings.dynamic_initialized) + sizeof(settings.conf_hubs) + sizeof(settings.bots) + sizeof(settings.uid) + \
 sizeof(settings.autocron) + \
 sizeof(settings.username) + sizeof(settings.homedir) + \
 sizeof(settings.portmin) + sizeof(settings.portmin) + sizeof(settings.datadir)
 
+#define SIZE_PAD_ALIGN PREFIXLEN
 #define SIZE_PAD sizeof(settings.padding)
+#define SIZE_PAD_PACK sizeof(settings.pack_padding)
 
 #define SIZE_SETTINGS sizeof(settings_t)