summaryrefslogtreecommitdiffstats
path: root/src/cutest_slib.c
blob: 1e0e6c408d82cd8e528b7f61d7db83b10a994af9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include "config_xor.h"

#include <string.h>
#include "CuTest.h"
#include "samhain.h"

void Test_sl_stale (CuTest *tc) {

  extern int get_the_fd (SL_TICKET ticket);

  int       fd1, fd2, ret, line, val;
  SL_TICKET tfd1, tfd2;
  char *    err1;
  char      err2[128];

  line = __LINE__; tfd1 = sl_open_read(__FILE__, __LINE__, "/etc/group", SL_NOPRIV);
  CuAssertTrue(tc, tfd1 > 0);

  fd1 = get_the_fd(tfd1);
  CuAssertTrue(tc, fd1 >= 0);

  ret = close(fd1);
  CuAssertTrue(tc, ret == 0);

  tfd2 = sl_open_read(__FILE__, __LINE__, "/etc/group", SL_NOPRIV);
  CuAssertTrue(tc, tfd2 > 0);
  CuAssertTrue(tc, tfd2 != tfd1);

  fd2 = get_the_fd(tfd2);
  CuAssertIntEquals(tc, fd1, fd2);

  err1 = sl_check_stale();
  CuAssertTrue(tc, err1 != NULL);

  sl_snprintf(err2, sizeof(err2), 
	      "stale handle, %s, %d", __FILE__, line);
  val = strcmp(err1, err2);
  CuAssertIntEquals(tc, 0, val);
}

void Test_sl_snprintf (CuTest *tc) {

  int ret = 0;
  char input[16];

  memset (&input, 'X', 16);
  ret = sl_snprintf(input, 10, "%s\n", "01234567890123456789");
  CuAssertIntEquals(tc, ret, 0);
  CuAssertTrue(tc, input[9]  == '\0');
  CuAssertTrue(tc, input[10] == 'X');

  memset (&input, 'X', 16);
  ret = sl_snprintf(input, 4, "%d\n", "012345");
  CuAssertIntEquals(tc, ret, 0);
  CuAssertTrue(tc, input[3] == '\0');
  CuAssertTrue(tc, input[4] == 'X');
}

void Test_sl_strcasecmp (CuTest *tc) {
  char one[64], two[64];
  int  res;

  strcpy(one, "foo");
  strcpy(two, "foo");
  res = sl_strcasecmp(one, two);
  CuAssertIntEquals(tc, 0, res);

  strcpy(one, "fo");
  strcpy(two, "foo");
  res = sl_strcasecmp(one, two);
  CuAssertIntEquals(tc, -1, res);

  strcpy(one, "foo");
  strcpy(two, "fo");
  res = sl_strcasecmp(one, two);
  CuAssertIntEquals(tc, 1, res);

  strcpy(one, "1234");
  strcpy(two, "2345");
  res = sl_strcasecmp(one, two);
  CuAssertIntEquals(tc, -1, res);

  strcpy(one, "234");
  strcpy(two, "123");
  res = sl_strcasecmp(one, two);
  CuAssertIntEquals(tc, 1, res);

  strcpy(one, "");
  strcpy(two, "123");
  res = sl_strcasecmp(one, two);
  CuAssertIntEquals(tc, -1, res);

  strcpy(one, "234");
  strcpy(two, "");
  res = sl_strcasecmp(one, two);
  CuAssertIntEquals(tc, 1, res);

  strcpy(one, "");
  strcpy(two, "");
  res = sl_strcasecmp(one, two);
  CuAssertTrue(tc, res == 0);

#ifndef SL_FAIL_ON_ERROR
  res = sl_strcasecmp(NULL, two);
  CuAssertIntEquals(tc, -1, res);

  res = sl_strcasecmp(one, NULL);
  CuAssertIntEquals(tc, 1, res);

  res = sl_strcasecmp(NULL, NULL);
  CuAssertTrue(tc, res != 0);
#endif
}