]> CyberLeo.Net >> Repos - FreeBSD/releng/9.3.git/blob - contrib/ntp/sntp/tests/fileHandlingTest.c
Fix BIND remote denial of service vulnerability. [SA-16:08]
[FreeBSD/releng/9.3.git] / contrib / ntp / sntp / tests / fileHandlingTest.c
1
2 #include "config.h"
3 #include "stdlib.h"
4 #include "sntptest.h"
5
6 #include "fileHandlingTest.h" /* required because of the h.in thingy */
7
8 #include <string.h>
9 #include <unistd.h>
10
11 const char *
12 CreatePath(
13         const char *            filename,
14         enum DirectoryType      argument
15         )
16 {
17         const char      srcdir[] = SRCDIR_DEF;//"@abs_srcdir@/data/";
18         size_t          plen = sizeof(srcdir) + strlen(filename) + 1;
19         char *          path = emalloc(plen);
20         ssize_t         retc;
21
22         UNUSED_ARG(argument);
23
24         retc = snprintf(path, plen, "%s%s", srcdir, filename);
25         if (retc <= 0 || (size_t)retc >= plen)
26                 exit(1);
27         return path;
28 }
29
30
31 void
32 DestroyPath(
33         const char *    pathname
34         )
35 {
36         /* use a union to get terminally rid of the 'const' attribute */
37         union {
38                 const char *ccp;
39                 void       *vp;
40         } any;
41
42         any.ccp = pathname;
43         free(any.vp);
44 }
45
46
47 int
48 GetFileSize(
49         FILE *  file
50         )
51 {
52         fseek(file, 0L, SEEK_END);
53         int length = ftell(file);
54         fseek(file, 0L, SEEK_SET);
55
56         return length;
57 }
58
59
60 bool
61 CompareFileContent(
62         FILE *  expected,
63         FILE *  actual
64         )
65 {
66         int currentLine = 1;
67
68         char actualLine[1024];
69         char expectedLine[1024];
70         size_t lenAct = sizeof actualLine;
71         size_t lenExp = sizeof expectedLine;
72         
73         while (  ( (fgets(actualLine, lenAct, actual)) != NULL)
74               && ( (fgets(expectedLine, lenExp, expected)) != NULL )
75               ) {
76
77         
78                 if( strcmp(actualLine,expectedLine) !=0 ){
79                         printf("Comparision failed on line %d",currentLine);
80                         return FALSE;
81                 }
82
83                 currentLine++;
84         }
85
86         return TRUE;
87 }
88
89
90 void
91 ClearFile(
92         const char * filename
93         )
94 {
95         if (!truncate(filename, 0))
96                 exit(1);
97 }