Răsfoiți Sursa

* Removed the garblestrings dependancy on checksum checking

svn: 924
Bryan Drewery 22 ani în urmă
părinte
comite
c3af85da93
4 a modificat fișierele cu 35 adăugiri și 28 ștergeri
  1. 1 0
      doc/UPDATES
  2. 31 6
      src/binary.c
  3. 2 8
      src/binary.h
  4. 1 14
      src/main.c

+ 1 - 0
doc/UPDATES

@@ -7,6 +7,7 @@ This is a summary of ChangeLog basically.
 3.Fixed a bug in defalg_user()
 4.Several user cmds on BOTS were not being shared.
 5.Fixed a fatal bug in +take.
+6.Removed garblestrings dependancy on binary checksum checking.
 
 1.1.5
 

+ 31 - 6
src/binary.c

@@ -14,19 +14,24 @@
 #include "misc_file.h"
 
 #ifndef CYGWIN_HACKS
-encdata_t encdata = {
+
+typedef struct encdata_struct {
+  char prefix[16];
+  char data[512];
+} encdata_t;
+
+static encdata_t encdata = {
   "AAAAAAAAAAAAAAAA",
   ""
 };
 
 int checked_bin_buf = 0;
 
-char *
+static char *
 bin_md5(const char *fname, int todo)
 {
   static char hash[MD5_HASH_LENGTH + 1] = "";
-  unsigned char md5out[MD5_HASH_LENGTH + 1] = "";
-  char buf[17] = "";
+  unsigned char md5out[MD5_HASH_LENGTH + 1] = "", buf[17] = "";
   FILE *f = NULL;
   size_t len = 0;
   MD5_CTX ctx;
@@ -37,7 +42,7 @@ bin_md5(const char *fname, int todo)
 
   MD5_Init(&ctx);
   while ((len = fread(buf, 1, sizeof buf - 1, f))) {
-    if (!strncmp(buf, STR("AAAAAAAAAAAAAAAA"), 16)) {
+    if (!memcmp(buf, &encdata.prefix, 16)) {
       break;
     }
     MD5_Update(&ctx, buf, len);
@@ -88,7 +93,7 @@ bin_md5(const char *fname, int todo)
         werr(ERR_BINSTAT);
       }
 
-      if (!strncmp(buf, STR("AAAAAAAAAAAAAAAA"), 16)) {
+      if (!memcmp(buf, &encdata.prefix, 16)) {
         /* now we have 512 for data :D */
         char *enc_hash = NULL;
 
@@ -115,4 +120,24 @@ bin_md5(const char *fname, int todo)
 
   return hash;
 }
+
+
+void
+check_sum(const char *fname)
+{
+  if (!encdata.data[0]) {
+    printf("* Wrote checksum to binary. (%s)\n", bin_md5(fname, WRITE_MD5));
+  } else {
+    char *hash = NULL;
+
+    hash = decrypt_string(SALT1, encdata.data);
+
+    if (strcmp(bin_md5(fname, GET_MD5), hash)) {
+      free(hash);
+      unlink(fname);
+      fatal("!! Invalid binary", 0);
+    }
+    free(hash);
+  }
+}
 #endif /* !CYGWIN_HACKS */

+ 2 - 8
src/binary.h

@@ -1,17 +1,11 @@
 #ifndef _BINARY_H
 #  define _BINARY_H
 
-typedef struct encdata_struct {
-  char prefix[16];
-  char data[512];
-} encdata_t;
-
-
-extern encdata_t encdata;
 extern int checked_bin_buf;
 
 #  define WRITE_MD5 	1
 #  define GET_MD5		2
 
-char *bin_md5(const char *, int);
+
+void check_sum(const char *);
 #endif /* !_BINARY_H */

+ 1 - 14
src/main.c

@@ -695,20 +695,7 @@ int main(int argc, char **argv)
   binname = getfullbinname(argv[0]);
 
 #ifndef CYGWIN_HACKS
-  if (!encdata.data[1]) {
-    printf("* Wrote checksum to binary. (%s)\n", bin_md5(binname, WRITE_MD5));
-  } else {
-    char *hash = NULL;
-
-    hash = decrypt_string(SALT1, encdata.data);
-
-    if (strcmp(bin_md5(binname, GET_MD5), hash)) {
-      free(hash);
-      unlink(argv[0]);
-      fatal("!! Invalid binary", 0);
-    }
-    free(hash);
-  }
+  check_sum(binname);
   if (!checked_bin_buf)
     exit(1);
 #endif /* !CYGWIN_HACKS */