#include <ctype.h>
#endif
-void hex_dump(void *data, int size)
+void
+hex_dump(void *data, int size)
{
/* dumps size bytes of *data to stdout. Looks like:
* [0000] 75 6E 6B 6E 6F 77 6E 20
int n;
char bytestr[4] = {0};
char addrstr[10] = {0};
- char hexstr[ 16*3 + 5] = {0};
- char charstr[16*1 + 5] = {0};
- for (n=1;n<=size;n++) {
- if (n%16 == 1) {
+ char hexstr[16 * 3 + 5] = {0};
+ char charstr[16 * 1 + 5] = {0};
+ for (n = 1; n <= size; n++) {
+ if (n % 16 == 1) {
/* store address for this line */
snprintf(addrstr, sizeof(addrstr), "%.4x",
- ((unsigned int)p-(unsigned int)data) );
+ ((unsigned int) p - (unsigned int) data));
}
-
c = *p;
if (xisalnum(c) == 0) {
c = '.';
}
-
/* store hex str (for left side) */
snprintf(bytestr, sizeof(bytestr), "%02X ", *p);
- strncat(hexstr, bytestr, sizeof(hexstr)-strlen(hexstr)-1);
+ strncat(hexstr, bytestr, sizeof(hexstr) - strlen(hexstr) - 1);
/* store char str (for right side) */
snprintf(bytestr, sizeof(bytestr), "%c", c);
- strncat(charstr, bytestr, sizeof(charstr)-strlen(charstr)-1);
+ strncat(charstr, bytestr, sizeof(charstr) - strlen(charstr) - 1);
- if (n%16 == 0) {
+ if (n % 16 == 0) {
/* line completed */
fprintf(stderr, "[%4.4s] %-50.50s %s\n", addrstr, hexstr, charstr);
hexstr[0] = 0;
charstr[0] = 0;
- } else if (n%8 == 0) {
+ } else if (n % 8 == 0) {
/* half line: add whitespaces */
- strncat(hexstr, " ", sizeof(hexstr)-strlen(hexstr)-1);
- strncat(charstr, " ", sizeof(charstr)-strlen(charstr)-1);
+ strncat(hexstr, " ", sizeof(hexstr) - strlen(hexstr) - 1);
+ strncat(charstr, " ", sizeof(charstr) - strlen(charstr) - 1);
}
- p++; /* next byte */
+ p++; /* next byte */
}
if (strlen(hexstr) > 0) {
}
}
}
-
+
/*
* mswin_negotiate_auth: helper for Negotiate Authentication for Squid Cache
*
helperfail(const char *reason)
{
#if FAIL_DEBUG
- fail_debug_enabled =1;
+ fail_debug_enabled = 1;
#endif
SEND2("BH %s", reason);
}
/*
- options:
- -d enable debugging.
- -v enable verbose Negotiate packet debugging.
+ * options:
+ * -d enable debugging.
+ * -v enable verbose Negotiate packet debugging.
*/
char *my_program_name = NULL;
{
int opt, had_error = 0;
- opterr =0;
+ opterr = 0;
while (-1 != (opt = getopt(argc, argv, "hdv"))) {
switch (opt) {
case 'd':
char *c, *decoded;
int plen, status;
int oversized = 0;
- char * ErrorMessage;
- static char cred[SSP_MAX_CRED_LEN+1];
+ char *ErrorMessage;
+ static char cred[SSP_MAX_CRED_LEN + 1];
BOOL Done = FALSE;
try_again:
if (fgets(buf, BUFFER_SIZE, stdin) == NULL)
return 0;
- c = memchr(buf, '\n', BUFFER_SIZE); /* safer against overrun than strchr */
+ c = memchr(buf, '\n', BUFFER_SIZE); /* safer against overrun than strchr */
if (c) {
if (oversized) {
helperfail("illegal request received");
return 1;
}
/* Obtain server blob against SSPI */
- plen = (strlen(buf) - 3) * 3 / 4; /* we only need it here. Optimization */
+ plen = (strlen(buf) - 3) * 3 / 4; /* we only need it here. Optimization */
c = (char *) SSP_MakeNegotiateBlob(decoded, plen, &Done, &status, cred);
if (status == SSP_OK) {
if (Done) {
- lc(cred); /* let's lowercase them for our convenience */
+ lc(cred); /* let's lowercase them for our convenience */
have_serverblob = 0;
Done = FALSE;
if (Negotiate_packet_debug_enabled) {
- printf("AF %s %s\n",c,cred);
decoded = base64_decode(c);
debug("sending 'AF' %s to squid with data:\n", cred);
- hex_dump(decoded, (strlen(c) * 3) / 4);
+ if (c != NULL)
+ hex_dump(decoded, (strlen(c) * 3) / 4);
+ else
+ fprintf(stderr, "No data available.\n");
+ printf("AF %s %s\n", c, cred);
} else
SEND3("AF %s %s", c, cred);
} else {
if (Negotiate_packet_debug_enabled) {
- printf("TT %s\n",c);
decoded = base64_decode(c);
debug("sending 'TT' to squid with data:\n");
hex_dump(decoded, (strlen(c) * 3) / 4);
+ printf("TT %s\n", c);
} else {
SEND2("TT %s", c);
}
helperfail("can't obtain server blob");
return 1;
}
-
if (memcmp(buf, "KK ", 3) == 0) { /* authenticate-request */
if (!have_serverblob) {
helperfail("invalid server blob");
SEND("NA * Packet format error, couldn't base64-decode");
return 1;
}
-
/* check against SSPI */
- plen = (strlen(buf) - 3) * 3 / 4; /* we only need it here. Optimization */
+ plen = (strlen(buf) - 3) * 3 / 4; /* we only need it here. Optimization */
c = (char *) SSP_ValidateNegotiateCredentials(decoded, plen, &Done, &status, cred);
if (status == SSP_ERROR) {
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */
- (LPTSTR) &ErrorMessage,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */
+ (LPTSTR) & ErrorMessage,
0,
NULL);
if (ErrorMessage[strlen(ErrorMessage) - 1] == '\n')
LocalFree(ErrorMessage);
return 1;
}
-
if (Done) {
lc(cred); /* let's lowercase them for our convenience */
have_serverblob = 0;
Done = FALSE;
if (Negotiate_packet_debug_enabled) {
- printf("AF %s %s\n",c,cred);
decoded = base64_decode(c);
debug("sending 'AF' %s to squid with data:\n", cred);
- hex_dump(decoded, (strlen(c) * 3) / 4);
+ if (c != NULL)
+ hex_dump(decoded, (strlen(c) * 3) / 4);
+ else
+ fprintf(stderr, "No data available.\n");
+ printf("AF %s %s\n", c, cred);
} else {
SEND3("AF %s %s", c, cred);
}
return 1;
} else {
if (Negotiate_packet_debug_enabled) {
- printf("TT %s\n",c);
decoded = base64_decode(c);
debug("sending 'TT' to squid with data:\n");
hex_dump(decoded, (strlen(c) * 3) / 4);
+ printf("TT %s\n", c);
} else
SEND2("TT %s", c);
return 1;
}
- } else { /* not an auth-request */
+ } else { /* not an auth-request */
helperfail("illegal request received");
fprintf(stderr, "Illegal request received: '%s'\n", buf);
return 1;