int banner1_selftest() { unsigned i; struct Banner1 *b; struct ProtocolState tcb_state[1]; const unsigned char *px; unsigned length; struct BannerOutput banout[1]; static const char *http_header = "HTTP/1.0 302 Redirect\r\n" "Date: Tue, 03 Sep 2013 06:50:01 GMT\r\n" "Connection: close\r\n" "Via: HTTP/1.1 ir14.fp.bf1.yahoo.com (YahooTrafficServer/1.2.0.13 [c s f ])\r\n" "Server: YTS/1.20.13\r\n" "Cache-Control: no-store\r\n" "Content-Type: text/html\r\n" "Content-Language: en\r\n" "Location: http://failsafe.fp.yahoo.com/404.html\r\n" "Content-Length: 227\r\n" "\r\n<title>hello</title>\n"; px = (const unsigned char *)http_header; length = (unsigned)strlen(http_header); /* * First, test the "banout" subsystem */ if (banout_selftest() != 0) { fprintf(stderr, "banout: failed\n"); return 1; } /* * Test one character at a time */ b = banner1_create(); banout_init(banout); memset(tcb_state, 0, sizeof(tcb_state[0])); for (i=0; i<length; i++) banner1_parse( b, tcb_state, px+i, 1, banout); { const unsigned char *s = banout_string(banout, PROTO_HTTP); if (memcmp(s, "HTTP/1.0 302", 11) != 0) { printf("banner1: test failed\n"); return 1; } } banout_release(banout); banner1_destroy(b); /* * Test whole buffer */ b = banner1_create(); memset(tcb_state, 0, sizeof(tcb_state[0])); banner1_parse( b, tcb_state, px, length, banout); banner1_destroy(b); /*if (memcmp(banner, "Via:HTTP/1.1", 11) != 0) { printf("banner1: test failed\n"); return 1; }*/ { int x = 0; x = banner_ssl.selftest(); if (x) { fprintf(stderr, "SSL banner: selftest failed\n"); return 1; } x = banner_http.selftest(); if (x) { fprintf(stderr, "HTTP banner: selftest failed\n"); return 1; } return x; } }
int banner1_selftest() { unsigned i; struct Banner1 *b; char banner[128]; unsigned banner_offset; struct Banner1State pstate[1]; unsigned proto; const unsigned char *px; unsigned length; static const char *http_header = "HTTP/1.0 302 Redirect\r\n" "Date: Tue, 03 Sep 2013 06:50:01 GMT\r\n" "Connection: close\r\n" "Via: HTTP/1.1 ir14.fp.bf1.yahoo.com (YahooTrafficServer/1.2.0.13 [c s f ])\r\n" "Server: YTS/1.20.13\r\n" "Cache-Control: no-store\r\n" "Content-Type: text/html\r\n" "Content-Language: en\r\n" "Location: http://failsafe.fp.yahoo.com/404.html\r\n" "Content-Length: 227\r\n" "\r\n"; px = (const unsigned char *)http_header; length = (unsigned)strlen(http_header); /* * Test one character at a time */ b = banner1_create(); memset(banner, 0xa3, sizeof(banner)); memset(pstate, 0, sizeof(pstate[0])); proto = 0; banner_offset = 0; for (i=0; i<length; i++) banner1_parse( b, pstate, &proto, px+i, 1, banner, &banner_offset, sizeof(banner) ); if (memcmp(banner, "Via:HTTP/1.1", 11) != 0) { printf("banner1: test failed\n"); return 1; } banner1_destroy(b); /* * Test whole buffer */ b = banner1_create(); memset(banner, 0xa3, sizeof(banner)); memset(pstate, 0, sizeof(pstate[0])); proto = 0; banner_offset = 0; banner1_parse( b, pstate, &proto, px, length, banner, &banner_offset, sizeof(banner) ); if (memcmp(banner, "Via:HTTP/1.1", 11) != 0) { printf("banner1: test failed\n"); return 1; } banner1_destroy(b); return 0; }