32 #define ENABLE_CURLX_PRINTF 40 #define LOGFILE "log/fake_ntlm%d.log" 48 static char *
printable(
char *inbuf,
size_t inlength)
57 #define HEX_FMT_STR "[0x%02X]" 59 #define NOTHING_STR "[NOTHING]" 63 inlength = strlen(inbuf);
68 outsize = inlength + outincr;
82 for(i = 0; i<inlength; i++) {
85 newsize = outsize + outincr;
86 newbuf =
realloc(outbuf, newsize);
95 if((inbuf[i] > 0x20) && (inbuf[i] < 0x7F)) {
110 int main(
int argc,
char *argv[])
113 char logfilename[256];
117 char *type1_input = NULL, *type3_input = NULL;
118 char *type1_output = NULL, *type3_output = NULL;
123 const char *helper_user =
"unknown";
124 const char *helper_proto =
"unknown";
125 const char *helper_domain =
"unknown";
126 bool use_cached_creds =
FALSE;
132 if(!strcmp(
"--use-cached-creds", argv[arg])) {
133 use_cached_creds =
TRUE;
136 else if(!strcmp(
"--helper-protocol", argv[arg])) {
139 helper_proto = argv[arg++];
141 else if(!strcmp(
"--username", argv[arg])) {
144 helper_user = argv[arg++];
146 else if(!strcmp(
"--domain", argv[arg])) {
149 helper_domain = argv[arg++];
152 puts(
"Usage: fake_ntlm [option]\n" 153 " --use-cached-creds\n" 154 " --helper-protocol [protocol]\n" 155 " --username [username]\n" 156 " --domain [domain]");
161 env =
getenv(
"CURL_NTLM_AUTH_TESTNUM");
164 long lnum = strtol(env, &endptr, 10);
165 if((endptr != env + strlen(env)) || (lnum < 1L)) {
166 fprintf(stderr,
"Test number not valid in CURL_NTLM_AUTH_TESTNUM");
172 fprintf(stderr,
"Test number not specified in CURL_NTLM_AUTH_TESTNUM");
180 logmsg(
"fake_ntlm (user: %s) (proto: %s) (domain: %s) (cached creds: %s)",
181 helper_user, helper_proto, helper_domain,
182 (use_cached_creds) ?
"yes" :
"no");
184 env =
getenv(
"CURL_NTLM_AUTH_SRCDIR");
190 stream = fopen(filename,
"rb");
193 logmsg(
"fopen() failed with error: %d %s", error, strerror(error));
194 logmsg(
"Error opening file: %s", filename);
195 logmsg(
"Couldn't open test file %ld", testnum);
200 error =
getpart(&type1_input, &size,
"ntlm_auth_type1",
"input", stream);
202 if(error || size == 0) {
203 logmsg(
"getpart() type 1 input failed with error: %d", error);
208 stream = fopen(filename,
"rb");
211 logmsg(
"fopen() failed with error: %d %s", error, strerror(error));
212 logmsg(
"Error opening file: %s", filename);
213 logmsg(
"Couldn't open test file %ld", testnum);
218 error =
getpart(&type3_input, &size,
"ntlm_auth_type3",
"input", stream);
220 if(error || size == 0) {
221 logmsg(
"getpart() type 3 input failed with error: %d", error);
226 while(fgets(buf,
sizeof(buf), stdin)) {
227 if(strcmp(buf, type1_input) == 0) {
228 stream = fopen(filename,
"rb");
231 logmsg(
"fopen() failed with error: %d %s", error, strerror(error));
232 logmsg(
"Error opening file: %s", filename);
233 logmsg(
"Couldn't open test file %ld", testnum);
238 error =
getpart(&type1_output, &size,
"ntlm_auth_type1",
"output",
241 if(error || size == 0) {
242 logmsg(
"getpart() type 1 output failed with error: %d", error);
246 printf(
"%s", type1_output);
249 else if(strncmp(buf, type3_input, strlen(type3_input)) == 0) {
250 stream = fopen(filename,
"rb");
253 logmsg(
"fopen() failed with error: %d %s", error, strerror(error));
254 logmsg(
"Error opening file: %s", filename);
255 logmsg(
"Couldn't open test file %ld", testnum);
260 error =
getpart(&type3_output, &size,
"ntlm_auth_type3",
"output",
263 if(error || size == 0) {
264 logmsg(
"getpart() type 3 output failed with error: %d", error);
268 printf(
"%s", type3_output);
272 printf(
"Unknown request\n");
275 logmsg(
"invalid input: '%s'\n", msgbuf);
279 logmsg(
"OOM formatting invalid input: '%s'\n", buf);
const char * serverlogfile
int main(int argc, char *argv[])
#define realloc(ptr, size)
UNITTEST_START int testnum
void logmsg(const char *msg,...)
static char * printable(char *inbuf, size_t inlength)
char * test2file(long testno)
int getpart(char **outbuf, size_t *outlen, const char *main, const char *sub, FILE *stream)