Browse Source

extracted read_file function out for future use

cecylia 6 years ago
parent
commit
aaa30f882f

+ 3 - 1
relay_station/tests/Makefile

@@ -5,7 +5,9 @@ TARGETS=check_tagged
 
 all: $(TARGETS)
 
-check_tagged: check_tagged.c ../flow.c ../crypto.o ../relay.o ../cryptothread.o ../ptwist168.o ../packet.o ../util.o ../flow.h ../crypto.h ../relay.h ../cryptothread.h ../ptwist.h ../packet.h ../util.h
+test_util.o: test_util.h
+
+check_tagged: check_tagged.c test_util.o ../flow.c ../crypto.o ../relay.o ../cryptothread.o ../ptwist168.o ../packet.o ../util.o ../flow.h ../crypto.h ../relay.h ../cryptothread.h ../ptwist.h ../packet.h ../util.h
 	gcc -g -ggdb -o $@ $^ -L/usr/local/lib -I/usr/local/include -lssl -lcrypto -ldl -lpthread -lpcap -lcheck_pic -lrt -lm -lsubunit
 
 clean:

+ 5 - 28
relay_station/tests/check_tagged.c

@@ -11,32 +11,20 @@
 #include "../cryptothread.h"
 #include "../packet.h"
 #include "../util.h"
+#include "test_util.h"
 
 START_TEST(test_recognize_notag){
     struct packet_info *info;
-    uint8_t *data;
-    FILE *fp;
-    uint64_t fsize;
+    uint8_t *packet;
 
     //populate packet_info with a tagged ClientHello message
-    fp = fopen("data/packet_untagged.dat", "rb");
-    if (fp == NULL) {
-        perror("fopen");
+    if(!read_file("data/packet_untagged.dat", &packet)){
         ck_abort();
     }
 
-    fseek(fp, 0, SEEK_END);
-    fsize = ftell(fp);
-    fseek(fp, 0, SEEK_SET);
-    data = smalloc(fsize);
-
-    int32_t result = fread(data, fsize, 1, fp);
-
-    fclose(fp);
-
     info = smalloc(sizeof(struct packet_info));
 
-    extract_packet_headers(data, info);
+    extract_packet_headers(packet, info);
 
     ck_assert_int_eq(check_handshake(info), 0);
 }
@@ -49,21 +37,10 @@ START_TEST(test_recognize_tag){
     uint64_t fsize;
 
     //populate packet_info with a tagged ClientHello message
-    fp = fopen("data/packet_tagged.dat", "rb");
-    if (fp == NULL) {
-        perror("fopen");
+    if(!read_file("data/packet_tagged.dat", &data)){
         ck_abort();
     }
 
-    fseek(fp, 0, SEEK_END);
-    fsize = ftell(fp);
-    fseek(fp, 0, SEEK_SET);
-    data = smalloc(fsize);
-
-    int32_t result = fread(data, fsize, 1, fp);
-
-    fclose(fp);
-    
     info = smalloc(sizeof(struct packet_info));
 
     extract_packet_headers(data, info);

+ 60 - 0
relay_station/tests/test_util.c

@@ -0,0 +1,60 @@
+/* Name: test_util.c
+ *
+ * This file contains functions for manipulating tagged flows. 
+ *
+ * Slitheen - a decoy routing system for censorship resistance
+ * Copyright (C) 2017 Cecylia Bocovich (cbocovic@uwaterloo.ca)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Additional permission under GNU GPL version 3 section 7
+ * 
+ * If you modify this Program, or any covered work, by linking or combining
+ * it with the OpenSSL library (or a modified version of that library), 
+ * containing parts covered by the terms of the OpenSSL Licence and the
+ * SSLeay license, the licensors of this Program grant you additional
+ * permission to convey the resulting work. Corresponding Source for a
+ * non-source form of such a combination shall include the source code
+ * for the parts of the OpenSSL library used as well as that of the covered
+ * work.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <check.h>
+
+#include "../util.h"
+
+int32_t read_file(const char *path, uint8_t **target){
+
+    FILE *fp;
+    int32_t fsize;
+
+    fp = fopen(path, "rb");
+    if (fp == NULL) {
+        perror("fopen");
+        return 0;
+    }
+
+    fseek(fp, 0, SEEK_END);
+    fsize = ftell(fp);
+    fseek(fp, 0, SEEK_SET);
+    *target = smalloc(fsize);
+
+    int32_t result = fread(*target, fsize, 1, fp);
+
+    fclose(fp);
+
+    return result;
+}

+ 33 - 0
relay_station/tests/test_util.h

@@ -0,0 +1,33 @@
+/* Slitheen - a decoy routing system for censorship resistance
+ * Copyright (C) 2017 Cecylia Bocovich (cbocovic@uwaterloo.ca)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Additional permission under GNU GPL version 3 section 7
+ * 
+ * If you modify this Program, or any covered work, by linking or combining
+ * it with the OpenSSL library (or a modified version of that library), 
+ * containing parts covered by the terms of the OpenSSL Licence and the
+ * SSLeay license, the licensors of this Program grant you additional
+ * permission to convey the resulting work. Corresponding Source for a
+ * non-source form of such a combination shall include the source code
+ * for the parts of the OpenSSL library used as well as that of the covered
+ * work.
+ */
+#ifndef TEST_UTIL_H
+#define TEST_UTIL_H
+
+int32_t read_file(const char *path, uint8_t **target);
+
+#endif /* TEST_UTIL_H */
+