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
|
/*------------------------------------------------------------------
* test_getenv_s
* File 'os/getenv_s.c'
* Lines executed:96.43% of 28
*
*------------------------------------------------------------------
*/
#include "test_private.h"
#include "safe_lib.h"
#include <stdlib.h>
#ifdef HAVE_GETENV_S
#define HAVE_NATIVE 1
#else
#define HAVE_NATIVE 0
#endif
#include "test_msvcrt.h"
#define LEN (4090)
static char dest[LEN];
int test_getenv_s(void);
int test_getenv_s(void) {
errno_t rc;
int errs = 0;
int ind;
size_t len;
char *str2;
const char *name = "PATH";
/*--------------------------------------------------*/
#ifndef HAVE_CT_BOS_OVR
EXPECT_BOS("empty dest")
rc = getenv_s(&len, NULL, LEN, name);
if (use_msvcrt && rc == ESNULLP) {
printf("safec.dll overriding msvcrt.dll\n");
use_msvcrt = false;
}
ERR_MSVC(ESNULLP, EINVAL);
EXPECT_BOS("empty name")
rc = getenv_s(&len, dest, LEN, NULL);
ERR_MSVC(ESNULLP, 0);
/*--------------------------------------------------*/
EXPECT_BOS("empty dest or dmax")
rc = getenv_s(&len, dest, 0, name);
ERR_MSVC(ESZEROL, EINVAL);
/*--------------------------------------------------*/
EXPECT_BOS("dest overflow")
rc = getenv_s(&len, dest, RSIZE_MAX_STR + 1, name);
ERR_MSVC(ESLEMAX, 0);
#endif
/*--------------------------------------------------*/
rc = getenv_s(&len, dest, 1, name);
ERR_MSVC(ESNOSPC, 34);
/*--------------------------------------------------*/
rc = getenv_s(&len, dest, LEN, name);
ERR(EOK);
str2 = getenv(name);
EXPSTR(dest, str2);
ind = strlen(str2);
if (!use_msvcrt) {
INDCMP(!= (int)len);
}
rc = getenv_s(NULL, dest, LEN, name);
ERR_MSVC(EOK, EINVAL);
EXPSTR(dest, str2);
/*--------------------------------------------------*/
rc = getenv_s(NULL, dest, LEN, "c#hewhc&wehc%erwhc$weh");
ERR_MSVC(-1, EINVAL);
if (!use_msvcrt) {
EXPNULL(dest);
}
rc = getenv_s(&len, dest, LEN, "c#hewhc&wehc%erwhc$weh");
ERR_MSVC(-1, 0);
ind = len;
INDCMP(!= 0);
EXPNULL(dest);
/*--------------------------------------------------*/
return (errs);
}
#ifndef __KERNEL__
/* simple hack to get this to work for both userspace and Linux kernel,
until a better solution can be created. */
int main(void) { return (test_getenv_s()); }
#endif
|