1 /* Generated by CIL v. 1.3.6 */
2 /* print_CIL_Input is true */
3
4 typedef unsigned int size_t;
5 typedef unsigned long pthread_t;
6 struct _check {
7 unsigned char failed ;
8 unsigned char passed ;
9 unsigned char error_code ;
10 char *helo ;
11 char *mail_from ;
12 char *rcpt_to ;
13 char *r_banner ;
14 char *r_helo ;
15 char *r_mail_from ;
16 char *r_rcpt_to ;
17 char *r_data_start ;
18 char *r_data_end ;
19 char *r_reset ;
20 };
21 typedef struct _check check;
22 struct _host {
23 unsigned char smtp_open ;
24 unsigned char resolved ;
25 unsigned char fatal_error ;
26 unsigned char fatal ;
27 char *ip_address ;
28 char *hostname ;
29 char *r_quit ;
30 check **smtp_check ;
31 };
32 typedef struct _host host;
33 struct _rule {
34 char *helo ;
35 char *mail_from ;
36 char *rcpt_to ;
37 };
38 typedef struct _rule rule;
39 struct options {
40 unsigned int time ;
41 unsigned short number_of_threads ;
42 unsigned short c_timeout ;
43 unsigned short r_timeout ;
44 unsigned short m_timeout ;
45 unsigned short cur_threads ;
46 unsigned short no_rules ;
47 unsigned long no_hostnames ;
48 unsigned long cur_host ;
49 pthread_t *tid ;
50 char *email_address ;
51 char *ip_range ;
52 char *ip_list ;
53 char *mailbox ;
54 char *auto_config_file ;
55 char *generate_file ;
56 char *config_file ;
57 char *email_template ;
58 char *name ;
59 char *domain ;
60 char *html_file ;
61 char *html_path ;
62 char *xml_file ;
63 char *xml_path ;
64 char *machine_file ;
65 char *machine_path ;
66 char *text_file ;
67 char *text_path ;
68 char *email ;
69 char *email_subject ;
70 unsigned char hours ;
71 unsigned char mins ;
72 unsigned char seconds ;
73 };
74 typedef long long __quad_t;
75 typedef long __off_t;
76 typedef __quad_t __off64_t;
77 typedef long __time_t;
78 typedef long __suseconds_t;
79 typedef int __ssize_t;
80 typedef unsigned int __socklen_t;
81 struct _IO_FILE;
82 typedef struct _IO_FILE FILE;
83 typedef void _IO_lock_t;
84 struct _IO_marker {
85 struct _IO_marker *_next ;
86 struct _IO_FILE *_sbuf ;
87 int _pos ;
88 };
89 struct _IO_FILE {
90 int _flags ;
91 char *_IO_read_ptr ;
92 char *_IO_read_end ;
93 char *_IO_read_base ;
94 char *_IO_write_base ;
95 char *_IO_write_ptr ;
96 char *_IO_write_end ;
97 char *_IO_buf_base ;
98 char *_IO_buf_end ;
99 char *_IO_save_base ;
100 char *_IO_backup_base ;
101 char *_IO_save_end ;
102 struct _IO_marker *_markers ;
103 struct _IO_FILE *_chain ;
104 int _fileno ;
105 int _flags2 ;
106 __off_t _old_offset ;
107 unsigned short _cur_column ;
108 signed char _vtable_offset ;
109 char _shortbuf[1] ;
110 _IO_lock_t *_lock ;
111 __off64_t _offset ;
112 void *__pad1 ;
113 void *__pad2 ;
114 void *__pad3 ;
115 void *__pad4 ;
116 size_t __pad5 ;
117 int _mode ;
118 char _unused2[(15U * sizeof(int ) - 4U * sizeof(void *)) - sizeof(size_t )] ;
119 };
120 typedef __ssize_t ssize_t;
121 struct timeval {
122 __time_t tv_sec ;
123 __suseconds_t tv_usec ;
124 };
125 typedef long __fd_mask;
126 struct __anonstruct_fd_set_13 {
127 __fd_mask __fds_bits[1024U / (8U * sizeof(__fd_mask ))] ;
128 };
129 typedef struct __anonstruct_fd_set_13 fd_set;
130 typedef unsigned short uint16_t;
131 typedef unsigned int uint32_t;
132 typedef __socklen_t socklen_t;
133 typedef unsigned short sa_family_t;
134 struct sockaddr {
135 sa_family_t sa_family ;
136 char sa_data[14] ;
137 };
138 typedef uint16_t in_port_t;
139 typedef uint32_t in_addr_t;
140 struct in_addr {
141 in_addr_t s_addr ;
142 };
143 struct sockaddr_in {
144 sa_family_t sin_family ;
145 in_port_t sin_port ;
146 struct in_addr sin_addr ;
147 unsigned char sin_zero[((sizeof(struct sockaddr ) - sizeof(unsigned short )) - sizeof(in_port_t )) - sizeof(struct in_addr )] ;
148 };
149 struct hostent {
150 char *h_name ;
151 char **h_aliases ;
152 int h_addrtype ;
153 int h_length ;
154 char **h_addr_list ;
155 };
156 struct flags {
157 unsigned char debug ;
158 unsigned char verbose ;
159 unsigned char check_mailbox ;
160 unsigned char maildir ;
161 unsigned char mbox ;
162 unsigned char pop ;
163 unsigned char auto_config ;
164 unsigned char generate_config ;
165 unsigned char output_html ;
166 unsigned char output_text ;
167 unsigned char output_machine ;
168 unsigned char output_xml ;
169 unsigned char resolve_hostnames ;
170 unsigned char display_only_ips ;
171 unsigned char ip_range ;
172 unsigned char ip_list ;
173 unsigned char send_email ;
174 unsigned char config_file ;
175 unsigned char email_template ;
176 unsigned char got_name_macro ;
177 unsigned char got_email ;
178 unsigned char threads ;
179 unsigned char display_all ;
180 };
181 typedef __time_t time_t;
182 typedef unsigned long __ino_t;
183 struct dirent {
184 __ino_t d_ino ;
185 __off_t d_off ;
186 unsigned short d_reclen ;
187 unsigned char d_type ;
188 char d_name[256] ;
189 };
190 struct __dirstream;
191 typedef struct __dirstream DIR;
192 typedef unsigned int __useconds_t;
193 struct timespec {
194 __time_t tv_sec ;
195 long tv_nsec ;
196 };
197 union __anonunion_pthread_attr_t_14 {
198 char __size[36] ;
199 long __align ;
200 };
201 typedef union __anonunion_pthread_attr_t_14 pthread_attr_t;
202 struct __pthread_internal_slist {
203 struct __pthread_internal_slist *__next ;
204 };
205 typedef struct __pthread_internal_slist __pthread_slist_t;
206 union __anonunion____missing_field_name_16 {
207 int __spins ;
208 __pthread_slist_t __list ;
209 };
210 struct __pthread_mutex_s {
211 int __lock ;
212 unsigned int __count ;
213 int __owner ;
214 int __kind ;
215 unsigned int __nusers ;
216 union __anonunion____missing_field_name_16 __annonCompField1 ;
217 };
218 union __anonunion_pthread_mutex_t_15 {
219 struct __pthread_mutex_s __data ;
220 char __size[24] ;
221 long __align ;
222 };
223 typedef union __anonunion_pthread_mutex_t_15 pthread_mutex_t;
224 union __anonunion_pthread_mutexattr_t_17 {
225 char __size[4] ;
226 long __align ;
227 };
228 typedef union __anonunion_pthread_mutexattr_t_17 pthread_mutexattr_t;
229 typedef __builtin_va_list __gnuc_va_list;
230 typedef __gnuc_va_list va_list;
231 #pragma merger(0,"/tmp/cil-igB1lIFD.i","-Wall,-g,-pthread")
232 extern __attribute__((__nothrow__)) int atoi(char const *__nptr ) __attribute__((__pure__,
233 __nonnull__(1))) ;
234 int check_mail_file(char *email_address , char *key ) ;
235 extern __attribute__((__nothrow__)) char *strncpy(char * __restrict __dest , char const * __restrict __src ,
236 size_t __n ) __attribute__((__nonnull__(1,2))) ;
237 extern __attribute__((__nothrow__)) int strncmp(char const *__s1 , char const *__s2 ,
238 size_t __n ) __attribute__((__pure__,
239 __nonnull__(1,2))) ;
240 extern __attribute__((__nothrow__)) char *strtok(char * __restrict __s , char const * __restrict __delim ) __attribute__((__nonnull__(2))) ;
241 extern __attribute__((__nothrow__)) size_t strlen(char const *__s ) __attribute__((__pure__,
242 __nonnull__(1))) ;
243 void swap_rule(char *dest , char const *rule___0 , int hostn ) ;
244 struct options o ;
245 host **hosts ;
246 rule **rules ;
247 int check_mail_file(char *email_address , char *key )
248 { char mac_buf[8193] ;
249 char tmp[9][8193] ;
250 char *word ;
251 int count ;
252 int emailc ;
253 int x ;
254 int y ;
255 int flag ;
256 size_t tmp___0 ;
257 int tmp___1 ;
258 size_t tmp___2 ;
259 size_t tmp___3 ;
260 int tmp___4 ;
261 int tmp___5 ;
262
263 {
264 count = 0;
265 emailc = 0;
266 x = 0;
267 y = 0;
268 flag = 0;
269 if ((unsigned int )email_address == (unsigned int )((void *)0)) {
270 return (0);
271 }
272 x = 0;
273 while ((unsigned long )x < o.no_hostnames) {
274 if (! (*(hosts + x))->smtp_open) {
275 goto __Cont;
276 }
277 y = 0;
278 while (y < (int )o.no_rules) {
279 swap_rule(mac_buf, (char const *)(*(rules + y))->mail_from, x);
280 tmp___0 = strlen((char const *)(mac_buf));
281 tmp___1 = strncmp((char const *)email_address, (char const *)(mac_buf),
282 tmp___0);
283 if (! tmp___1) {
284 emailc ++;
285 }
286 y ++;
287 }
288 __Cont: /* CIL Label */
289 x ++;
290 }
291 if (! emailc) {
292 return (0);
293 } else {
294 word = strtok((char * __restrict )key, (char const * __restrict )":");
295 while (word) {
296 count ++;
297 if (count < 6) {
298 strncpy((char * __restrict )(tmp[count]), (char const * __restrict )word,
299 8192U);
300 tmp[count][8192] = (char )'\000';
301 }
302 word = strtok((char * __restrict )((void *)0), (char const * __restrict )":");
303 }
304 tmp___5 = atoi((char const *)(tmp[2]));
305 if ((unsigned int )tmp___5 == o.time) {
306 x = 0;
307 while ((unsigned long )x < o.no_hostnames) {
308 y = 0;
309 tmp___2 = strlen((char const *)(tmp[3]));
310 tmp___3 = strlen((char const *)(*(hosts + x))->ip_address);
311 if (tmp___2 != tmp___3) {
312 goto __Cont___0;
313 }
314 while (tmp[3][y]) {
315 if ((int )tmp[3][y] != (int )*((*(hosts + x))->ip_address + y)) {
316 flag ++;
317 }
318 y ++;
319 }
320 if (! flag) {
321 tmp___4 = atoi((char const *)(tmp[4]));
322 (*((*(hosts + x))->smtp_check + tmp___4))->failed = (unsigned char)2;
323 }
324 flag = 0;
325 y = 0;
326 __Cont___0: /* CIL Label */
327 x ++;
328 }
329 }
330 }
331 return (0);
332 }
333 }
334 #pragma merger(0,"/tmp/cil-ZtejrG4Q.i","-Wall,-g,-pthread")
335 extern struct _IO_FILE *stderr ;
336 extern int fprintf(FILE * __restrict __stream , char const * __restrict __format
337 , ...) ;
338 extern int printf(char const * __restrict __format , ...) ;
339 extern void perror(char const *__s ) ;
340 extern int select(int __nfds , fd_set * __restrict __readfds , fd_set * __restrict __writefds ,
341 fd_set * __restrict __exceptfds , struct timeval * __restrict __timeout ) ;
342 extern __attribute__((__nothrow__)) void free(void *__ptr ) ;
343 extern __attribute__((__nothrow__, __noreturn__)) void exit(int __status ) ;
344 extern __attribute__((__nothrow__)) int *__errno_location(void) __attribute__((__const__)) ;
345 extern __attribute__((__nothrow__)) void *memcpy(void * __restrict __dest , void const * __restrict __src ,
346 size_t __n ) __attribute__((__nonnull__(1,2))) ;
347 extern __attribute__((__nothrow__)) void bzero(void *__s , size_t __n ) __attribute__((__nonnull__(1))) ;
348 extern __attribute__((__nothrow__)) int socket(int __domain , int __type , int __protocol ) ;
349 extern int connect(int __fd , struct sockaddr const *__addr , socklen_t __len ) ;
350 extern __attribute__((__nothrow__)) int getsockopt(int __fd , int __level , int __optname ,
351 void * __restrict __optval ,
352 socklen_t * __restrict __optlen ) ;
353 extern __attribute__((__nothrow__)) uint16_t htons(uint16_t __hostshort ) __attribute__((__const__)) ;
354 extern struct hostent *gethostbyaddr(void const *__addr , __socklen_t __len , int __type ) ;
355 extern struct hostent *gethostbyname(char const *__name ) ;
356 extern int close(int __fd ) ;
357 extern ssize_t read(int __fd , void *__buf , size_t __nbytes ) ;
358 extern unsigned int sleep(unsigned int __seconds ) ;
359 extern int fcntl(int __fd , int __cmd , ...) ;
360 extern __attribute__((__nothrow__)) in_addr_t inet_addr(char const *__cp ) ;
361 void fatal(char *fmt , ...) ;
362 void error(char *fmt , ...) ;
363 long get_ip(char *host___0 ) ;
364 int tcp_connect(long ipa ) ;
365 int connect_non_blocking(int sockfd , struct sockaddr const *thaddr , socklen_t salen ,
366 int nsec ) ;
367 int read_timeo(int sockfd , char *string , int max , int timeo ) ;
368 char *get_hostname(char const *addr ) ;
369 void *s_malloc(unsigned long size ) ;
370 struct flags f ;
371 long get_ip(char *host___0 )
372 { long ia ;
373 struct hostent *h ;
374 in_addr_t tmp ;
375
376 {
377 if (f.debug) {
378 fprintf((FILE * __restrict )stderr, (char const * __restrict )"Getting IP\n");
379 }
380 tmp = inet_addr((char const *)host___0);
381 ia = (long )tmp;
382 if (ia == -1L) {
383 h = gethostbyname((char const *)host___0);
384 if ((unsigned int )h == (unsigned int )((void *)0)) {
385 if (f.debug) {
386 fprintf((FILE * __restrict )stderr, (char const * __restrict )"Couldn\'t resolv ip\n");
387 }
388 return (-1L);
389 }
390 memcpy((void * __restrict )(& ia), (void const * __restrict )*(h->h_addr_list + 0),
391 4U);
392 }
393 if (f.debug) {
394 fprintf((FILE * __restrict )stderr, (char const * __restrict )"Got ip ok\n");
395 }
396 return (ia);
397 }
398 }
399 int tcp_connect(long ipa )
400 { struct sockaddr_in their_addr ;
401 int sockfd ;
402 int socket_f ;
403
404 {
405 socket_f = 0;
406 START1:
407 while (1) {
408 sockfd = socket(2, 1, 0);
409 if (! (sockfd == -1)) {
410 break;
411 }
412 perror("socket: ");
413 exit(1);
414 if (socket_f > 12) {
415 fatal((char *)"Still unable to create socket after 60 secs.... Try reducing the number of threads.....");
416 }
417 socket_f ++;
418 if (f.verbose) {
419 error((char *)"Unable to create socket.... sleeping for 5 seconds");
420 } else {
421 error((char *)"Unable to create socket.... sleeping for 5 seconds");
422 }
423 sleep(5U);
424 }
425 if (sockfd > 2000) {
426 close(sockfd);
427 fprintf((FILE * __restrict )stderr, (char const * __restrict )"Socket count exceding 2000; sleeping 5!\n");
428 sleep(5U);
429 goto START1;
430 }
431 their_addr.sin_family = (unsigned short)2;
432 their_addr.sin_port = htons((unsigned short)25);
433 their_addr.sin_addr.s_addr = (unsigned int )ipa;
434 bzero((void *)(& their_addr.sin_zero), 8U);
435 sockfd = connect_non_blocking(sockfd, (struct sockaddr const *)((struct sockaddr *)(& their_addr)),
436 sizeof(struct sockaddr ), (int )o.c_timeout);
437 if (sockfd == -1) {
438 if ((int )f.verbose > 1) {
439 error((char *)"! Unable to connect to host");
440 }
441 return (-1);
442 }
443 if (sockfd > 2000) {
444 printf((char const * __restrict )"\n\n\n\n\n\n\n\n******** in tcp_connect\n");
445 sleep(10U);
446 }
447 return (sockfd);
448 }
449 }
450 int connect_non_blocking(int sockfd , struct sockaddr const *thaddr , socklen_t salen ,
451 int nsec )
452 { int n ;
453 int flags ;
454 int serror ;
455 socklen_t len ;
456 fd_set rset ;
457 fd_set wset ;
458 struct timeval tval ;
459 int tmp ;
460 int *tmp___0 ;
461 int __d0 ;
462 int __d1 ;
463 int *tmp___1 ;
464 struct timeval *tmp___2 ;
465 int tmp___3 ;
466 register char __result ;
467 register char __result___0 ;
468 int tmp___4 ;
469 int *tmp___5 ;
470
471 {
472 flags = fcntl(sockfd, 3, 0);
473 if (flags == -1) {
474 perror("Cant set flags");
475 close(sockfd);
476 return (-1);
477 }
478 tmp = fcntl(sockfd, 4, flags | 2048);
479 if (tmp == -1) {
480 perror("Cant set socket options");
481 close(sockfd);
482 return (-1);
483 }
484 serror = 0;
485 n = connect(sockfd, thaddr, salen);
486 if (n == -1) {
487 tmp___0 = __errno_location();
488 if (*tmp___0 != 115) {
489 close(sockfd);
490 return (-1);
491 }
492 }
493 if (sockfd > 2000) {
494 printf((char const * __restrict )"\n\n\n\n\n\n******** in connect non blocking\n");
495 sleep(10U);
496 }
497 if (n == 0) {
498 goto done;
499 }
500 while (1) {
501 __asm__ volatile ("cld; rep; stosl": "=c" (__d0), "=D" (__d1): "a" (0), "0" (sizeof(fd_set ) / sizeof(__fd_mask )),
502 "1" (& rset.__fds_bits[0]): "memory");
503 break;
504 }
505 __asm__ volatile ("btsl %1,%0": "=m" (rset.__fds_bits[(unsigned int )sockfd / (8U * sizeof(__fd_mask ))]): "r" ((unsigned int )sockfd % (8U * sizeof(__fd_mask ))): "cc",
506 "memory");
507 wset = rset;
508 tval.tv_sec = (long )nsec;
509 tval.tv_usec = 500000L;
510 if (nsec) {
511 tmp___2 = & tval;
512 } else {
513 tmp___2 = (struct timeval *)((void *)0);
514 }
515 n = select(sockfd + 1, (fd_set * __restrict )(& rset), (fd_set * __restrict )(& wset),
516 (fd_set * __restrict )((void *)0), (struct timeval * __restrict )tmp___2);
517 if (n == 0) {
518 close(sockfd);
519 tmp___1 = __errno_location();
520 *tmp___1 = 110;
521 return (-1);
522 } else {
523 if (n == -1) {
524 perror("Select failed\n");
525 close(sockfd);
526 return (-1);
527 }
528 }
529 __asm__ volatile ("btl %1,%2 ; setcb %b0": "=q" (__result): "r" ((unsigned int )sockfd % (8U * sizeof(__fd_mask ))),
530 "m" (rset.__fds_bits[(unsigned int )sockfd / (8U * sizeof(__fd_mask ))]): "cc");
531 if (__result) {
532 goto _L;
533 } else {
534 __asm__ volatile ("btl %1,%2 ; setcb %b0": "=q" (__result___0): "r" ((unsigned int )sockfd % (8U * sizeof(__fd_mask ))),
535 "m" (wset.__fds_bits[(unsigned int )sockfd / (8U * sizeof(__fd_mask ))]): "cc");
536 if (__result___0) {
537 _L: /* CIL Label */
538 len = sizeof(serror);
539 tmp___3 = getsockopt(sockfd, 1, 4, (void * __restrict )(& serror), (socklen_t * __restrict )(& len));
540 if (tmp___3 < 0) {
541 close(sockfd);
542 return (-1);
543 }
544 } else {
545 error((char *)"**** Socket not set..... ");
546 perror("FD_SET: ");
547 close(sockfd);
548 exit(-1);
549 }
550 }
551 done:
552 tmp___4 = fcntl(sockfd, 4, flags);
553 if (tmp___4 == -1) {
554 perror("Can\'t restore the socket opts\n");
555 close(sockfd);
556 return (-1);
557 }
558 if (serror) {
559 tmp___5 = __errno_location();
560 *tmp___5 = serror;
561 close(sockfd);
562 return (-1);
563 }
564 return (sockfd);
565 }
566 }
567 int read_timeo(int sockfd , char *string , int max , int timeo )
568 { struct timeval tv ;
569 int numbytes ;
570 fd_set readfds ;
571 int __d0 ;
572 int __d1 ;
573 register char __result ;
574
575 {
576 numbytes = 0;
577 tv.tv_sec = (long )timeo;
578 tv.tv_usec = 500000L;
579 while (1) {
580 __asm__ volatile ("cld; rep; stosl": "=c" (__d0), "=D" (__d1): "a" (0), "0" (sizeof(fd_set ) / sizeof(__fd_mask )),
581 "1" (& readfds.__fds_bits[0]): "memory");
582 break;
583 }
584 __asm__ volatile ("btsl %1,%0": "=m" (readfds.__fds_bits[(unsigned int )sockfd / (8U * sizeof(__fd_mask ))]): "r" ((unsigned int )sockfd % (8U * sizeof(__fd_mask ))): "cc",
585 "memory");
586 select(sockfd + 1, (fd_set * __restrict )(& readfds), (fd_set * __restrict )((void *)0),
587 (fd_set * __restrict )((void *)0), (struct timeval * __restrict )(& tv));
588 __asm__ volatile ("btl %1,%2 ; setcb %b0": "=q" (__result): "r" ((unsigned int )sockfd % (8U * sizeof(__fd_mask ))),
589 "m" (readfds.__fds_bits[(unsigned int )sockfd / (8U * sizeof(__fd_mask ))]): "cc");
590 if (__result) {
591 numbytes = read(sockfd, (void *)string, (unsigned int )max);
592 if (numbytes < 1) {
593 return (0);
594 } else {
595 *(string + numbytes) = (char )'\000';
596 }
597 } else {
598 return (-1);
599 }
600 return (1);
601 }
602 }
603 char *get_hostname(char const *addr )
604 { struct hostent *hn ;
605 struct in_addr *myaddr ;
606 void *tmp ;
607
608 {
609 tmp = s_malloc((unsigned long )sizeof(struct in_addr ));
610 myaddr = (struct in_addr *)tmp;
611 myaddr->s_addr = inet_addr(addr);
612 hn = gethostbyaddr((void const *)((char *)myaddr), 4U, 2);
613 if ((unsigned int )hn == (unsigned int )((void *)0)) {
614 free((void *)myaddr);
615 return ((char *)addr);
616 }
617 free((void *)myaddr);
618 return (hn->h_name);
619 }
620 }
621 #pragma merger(0,"/tmp/cil-Pwl1SXo2.i","-Wall,-g,-pthread")
622 void display_screen(void) ;
623 void display_screen(void)
624 { int x ;
625 int y ;
626
627 {
628 x = 0;
629 y = 0;
630 x = 0;
631 while ((unsigned long )x < o.no_hostnames) {
632 if ((*(hosts + x))->smtp_open) {
633 printf((char const * __restrict )"Results for host: %s\n\n", (*(hosts + x))->ip_address);
634 if ((*(hosts + x))->fatal_error) {
635 printf((char const * __restrict )"There was a fatal error (%d) scanning this host\n",
636 (*(hosts + x))->fatal_error);
637 if ((int )(*(hosts + x))->fatal_error == 6) {
638 goto _L;
639 } else {
640 if ((int )(*(hosts + x))->fatal_error == 7) {
641 goto _L;
642 } else {
643 if ((int )(*(hosts + x))->fatal_error == 8) {
644 _L: /* CIL Label */
645 y = 0;
646 while (y <= (int )o.no_rules) {
647 printf((char const * __restrict )"\tResults for check: %d\n", y);
648 printf((char const * __restrict )"\t\tError code: %d\n", (*((*(hosts + x))->smtp_check + y))->error_code);
649 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 3) {
650 printf((char const * __restrict )"\t\t*%s*\n", (*((*(hosts + x))->smtp_check + y))->r_mail_from);
651 }
652 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 4) {
653 printf((char const * __restrict )"\t\t*%s*\n", (*((*(hosts + x))->smtp_check + y))->r_rcpt_to);
654 }
655 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 7) {
656 printf((char const * __restrict )"\t\t*%s*\n", (*((*(hosts + x))->smtp_check + y))->r_reset);
657 }
658 y ++;
659 }
660 }
661 }
662 }
663 } else {
664 y = 0;
665 while (y <= (int )o.no_rules) {
666 printf((char const * __restrict )"\tResults for check: %d\n", y);
667 if ((*((*(hosts + x))->smtp_check + y))->error_code) {
668 printf((char const * __restrict )"This checkl failed with error code (%d)\n",
669 (*((*(hosts + x))->smtp_check + y))->error_code);
670 } else {
671 if ((*((*(hosts + x))->smtp_check + y))->passed) {
672 printf((char const * __restrict )"\t\t*Passed this check\n");
673 } else {
674 printf((char const * __restrict )"\t\t!Failed this check\n");
675 }
676 }
677 y ++;
678 }
679 }
680 }
681 x ++;
682 }
683 return;
684 }
685 }
686 #pragma merger(0,"/tmp/cil-keSUczDt.i","-Wall,-g,-pthread")
687 extern __attribute__((__nothrow__)) time_t time(time_t *__timer ) ;
688 void set_defaults(void) ;
689 void banner(void) ;
690 void validate_options(void) ;
691 void parse_args(int argc , char * const *argv ) ;
692 int get_domain(void) ;
693 int get_ip_range(char *iprange ) ;
694 int parse_config(char *configfile ) ;
695 int get_email_file(char *email_file ) ;
696 int parse_aconfig(void) ;
697 void start_scan(void) ;
698 void display_html(void) ;
699 void display_machine(void) ;
700 void display_text(void) ;
701 void display_xml(void) ;
702 int parse_mbox(void) ;
703 int parse_maildir(void) ;
704 int parse_popbox(void) ;
705 int main(int argc , char **argv )
706 { time_t b_seconds ;
707 time_t a_seconds ;
708 int t_diff ;
709
710 {
711 b_seconds = (time_t )0;
712 a_seconds = (time_t )0;
713 banner();
714 set_defaults();
715 parse_args(argc, (char * const *)argv);
716 if (f.auto_config) {
717 parse_aconfig();
718 }
719 validate_options();
720 get_ip_range(o.ip_range);
721 parse_config(o.config_file);
722 get_domain();
723 get_email_file(o.email_template);
724 printf((char const * __restrict )"Starting the scan....... Please wait!\n\n\n");
725 b_seconds = time((time_t *)((void *)0));
726 start_scan();
727 a_seconds = time((time_t *)((void *)0));
728 if (b_seconds == -1L) {
729 a_seconds = 20L;
730 b_seconds = 0L;
731 } else {
732 if (a_seconds == -1L) {
733 a_seconds = 20L;
734 b_seconds = 0L;
735 } else {
736 if (a_seconds == b_seconds) {
737 a_seconds = 20L;
738 b_seconds = 0L;
739 }
740 }
741 }
742 t_diff = (int )(a_seconds - b_seconds);
743 o.hours = (unsigned char )(t_diff / 3600);
744 t_diff -= (int )o.hours * 3600;
745 o.mins = (unsigned char )(t_diff / 60);
746 t_diff -= (int )o.mins * 60;
747 o.seconds = (unsigned char )t_diff;
748 if (f.check_mailbox) {
749 printf((char const * __restrict )"\n\n\nFinished Scanning, Waiting %d seconds for mails to arrive......\n\n",
750 o.m_timeout);
751 sleep((unsigned int )o.m_timeout);
752 printf((char const * __restrict )"Checking mail....... Please Wait!\n");
753 if (f.maildir) {
754 parse_maildir();
755 } else {
756 if (f.mbox) {
757 parse_mbox();
758 } else {
759 if (f.pop) {
760 parse_popbox();
761 }
762 }
763 }
764 }
765 if (f.output_html) {
766 printf((char const * __restrict )"\n\nGenerating HTML results...... Please wait.\n\n");
767 display_html();
768 }
769 if (f.output_text) {
770 printf((char const * __restrict )"\n\nGenerating TEXT results...... Please wait.\n\n");
771 display_text();
772 }
773 if (f.output_machine) {
774 printf((char const * __restrict )"\n\nGenerating Machine Readable results...... Please wait.\n\n");
775 display_machine();
776 }
777 if (f.output_xml) {
778 printf((char const * __restrict )"\n\nGenerating XML results...... Please wait.\n\n");
779 display_xml();
780 }
781 banner();
782 return (0);
783 }
784 }
785 #pragma merger(0,"/tmp/cil-1UcA1mvr.i","-Wall,-g,-pthread")
786 extern __attribute__((__nothrow__)) void *realloc(void *__ptr , size_t __size ) __attribute__((__warn_unused_result__,
787 __malloc__)) ;
788 extern struct _IO_FILE *stdin ;
789 extern int fclose(FILE *__stream ) ;
790 extern FILE *fopen(char const * __restrict __filename , char const * __restrict __modes ) ;
791 extern __attribute__((__nothrow__)) int ( /* format attribute */ snprintf)(char * __restrict __s ,
792 size_t __maxlen ,
793 char const * __restrict __format
794 , ...) ;
795 extern __attribute__((__nothrow__)) int sscanf(char const * __restrict __s , char const * __restrict __format
796 , ...) ;
797 extern int fgetc(FILE *__stream ) ;
798 extern char *fgets(char * __restrict __s , int __n , FILE * __restrict __stream ) ;
799 extern void rewind(FILE *__stream ) ;
800 extern __attribute__((__nothrow__)) void *memset(void *__s , int __c , size_t __n ) __attribute__((__nonnull__(1))) ;
801 extern __attribute__((__nothrow__)) char *strcat(char * __restrict __dest , char const * __restrict __src ) __attribute__((__nonnull__(1,2))) ;
802 extern __attribute__((__nothrow__)) char *strncat(char * __restrict __dest , char const * __restrict __src ,
803 size_t __n ) __attribute__((__nonnull__(1,2))) ;
804 extern __attribute__((__nothrow__)) char *strstr(char const *__haystack , char const *__needle ) __attribute__((__pure__,
805 __nonnull__(1,2))) ;
806 extern unsigned short const **__ctype_b_loc(void) __attribute__((__const__)) ;
807 char *chomp(char *string ) ;
808 void debug(char *fmt , ...) ;
809 host **hosts ;
810 rule **rules ;
811 int get_ip_range(char *iprange )
812 { int start[4] ;
813 int startc[4] ;
814 int tstart[4] ;
815 int tstartc[4] ;
816 int end[4] ;
817 int endc[4] ;
818 int tend[4] ;
819 int tendc[4] ;
820 int i ;
821 int last ;
822 int hostnames ;
823 char *r ;
824 char *t ;
825 char *p ;
826 char buf[8193] ;
827 char *addy[5] ;
828 char *temp[2] ;
829 char *iprange2 ;
830 char hostnamet[8193] ;
831 char *tmp ;
832 size_t tmp___0 ;
833 size_t tmp___1 ;
834 void *tmp___2 ;
835 size_t tmp___3 ;
836 size_t tmp___4 ;
837 unsigned short const **tmp___5 ;
838 unsigned short const **tmp___6 ;
839 char *tmp___7 ;
840 char *tmp___8 ;
841 void *tmp___9 ;
842 void *tmp___10 ;
843 void *tmp___11 ;
844 size_t tmp___12 ;
845 void *tmp___13 ;
846 size_t tmp___14 ;
847 size_t tmp___15 ;
848 char *tmp___16 ;
849 char *tmp___17 ;
850
851 {
852 i = 0;
853 last = 0;
854 hostnames = 0;
855 tmp = strstr((char const *)iprange, "/");
856 if (tmp) {
857 fatal((char *)"Netmask notation is not supported yet...... please use the format 192.168.*.1-255\n");
858 }
859 printf((char const * __restrict )"\nCreating a list of IP\'s to scan....... Please wait!\n\n");
860 tmp___17 = strstr((char const *)iprange, ",");
861 if ((unsigned int )tmp___17 == (unsigned int )((void *)0)) {
862 strncpy((char * __restrict )(buf), (char const * __restrict )iprange, 8192U);
863 tmp___0 = strlen((char const *)iprange);
864 buf[tmp___0] = (char )'\000';
865 last = 1;
866 goto GETIP;
867 } else {
868 p = iprange;
869 t = p;
870 while (1) {
871 tmp___16 = p;
872 p ++;
873 if (! *tmp___16) {
874 break;
875 }
876 if ((int )*p == 44) {
877 *p = (char )'\000';
878 p ++;
879 strncpy((char * __restrict )(buf), (char const * __restrict )t, 8192U);
880 GETIP:
881 tmp___1 = strlen((char const *)(buf));
882 tmp___2 = s_malloc((unsigned long )((tmp___1 + 1U) * sizeof(char )));
883 iprange2 = (char *)tmp___2;
884 tmp___3 = strlen((char const *)(buf));
885 strncpy((char * __restrict )iprange2, (char const * __restrict )(buf),
886 tmp___3);
887 tmp___4 = strlen((char const *)(buf));
888 *(iprange2 + tmp___4) = (char )'\000';
889 addy[4] = (char *)((void *)0);
890 addy[3] = addy[4];
891 addy[2] = addy[3];
892 addy[1] = addy[2];
893 addy[0] = addy[1];
894 r = buf;
895 addy[0] = r;
896 debug((char *)"R == %s\n", r);
897 while (1) {
898 r ++;
899 if (! *r) {
900 break;
901 }
902 if ((int )*r == 46) {
903 i ++;
904 if (i < 4) {
905 *r = (char )'\000';
906 addy[i] = r + 1;
907 } else {
908 goto _L;
909 }
910 } else {
911 _L: /* CIL Label */
912 if ((int )*r != 46) {
913 if ((int )*r != 42) {
914 if ((int )*r != 45) {
915 tmp___5 = __ctype_b_loc();
916 if (! ((int const )*(*tmp___5 + (int )*r) & 2048)) {
917 if ((int )*r != 10) {
918 fatal((char *)"Invalid character in IP address notation\n");
919 }
920 }
921 }
922 }
923 }
924 }
925 }
926 if (i != 3) {
927 fatal((char *)"IP address format is illegal\n");
928 }
929 i = 0;
930 i = 0;
931 while (i < 4) {
932 if ((int )*(addy[i]) == 42) {
933 if (i == 0) {
934 fatal((char *)"For some reason I don\'t think it\'s wise scanning the whole bloody net\n\nBut if you sure then edit the source and remove this line\n");
935 }
936 if (i == 1) {
937 fprintf((FILE * __restrict )stderr, (char const * __restrict )"Sure you wanna scan a entire class A.... \n\n..... OK!\n\n");
938 }
939 start[i] = 1;
940 startc[i] = 1;
941 end[i] = 255;
942 endc[i] = 255;
943 } else {
944 tmp___8 = strstr((char const *)addy[i], "-");
945 if ((unsigned int )tmp___8 != (unsigned int )((void *)0)) {
946 temp[0] = addy[i];
947 while (1) {
948 if ((int )*(addy[i]) != 10) {
949 if ((int )*(addy[i]) != 46) {
950 if (! *(addy[i])) {
951 break;
952 }
953 } else {
954 break;
955 }
956 } else {
957 break;
958 }
959 if ((int )*(addy[i]) == 45) {
960 *(addy[i]) = (char )'\000';
961 temp[1] = addy[i] + 1;
962 start[i] = atoi((char const *)temp[0]);
963 startc[i] = atoi((char const *)temp[0]);
964 end[i] = atoi((char const *)temp[1]);
965 endc[i] = atoi((char const *)temp[1]);
966 } else {
967 tmp___6 = __ctype_b_loc();
968 if (! ((int const )*(*tmp___6 + (int )*(addy[i])) & 2048)) {
969 fatal((char *)"Invalid host specification\n");
970 }
971 }
972 tmp___7 = addy[i];
973 (addy[i]) ++;
974 if (*tmp___7) {
975
976 }
977 }
978 } else {
979 start[i] = atoi((char const *)addy[i]);
980 startc[i] = atoi((char const *)addy[i]);
981 end[i] = atoi((char const *)addy[i]);
982 endc[i] = atoi((char const *)addy[i]);
983 }
984 }
985 tstart[i] = start[i];
986 tstartc[i] = start[i];
987 tend[i] = end[i];
988 tendc[i] = endc[i];
989 if (start[i] > end[i]) {
990 fatal((char *)"Invalid ip range\n");
991 } else {
992 if (start[i] < 0) {
993 fatal((char *)"Invalid ip range\n");
994 } else {
995 if (end[i] > 255) {
996 fatal((char *)"Invalid ip range\n");
997 }
998 }
999 }
1000 i ++;
1001 }
1002 i = 0;
1003 while (i < 1) {
1004 while (start[i] <= end[i]) {
1005 while (start[i + 1] <= end[i + 1]) {
1006 while (start[i + 2] <= end[i + 2]) {
1007 while (start[i + 3] <= end[i + 3]) {
1008 (o.no_hostnames) ++;
1009 (start[i + 3]) ++;
1010 }
1011 start[i + 3] = tstart[i + 3];
1012 end[i + 3] = tend[i + 3];
1013 (start[i + 2]) ++;
1014 }
1015 start[i + 2] = tstart[i + 2];
1016 end[i + 2] = tend[i + 2];
1017 (start[i + 1]) ++;
1018 }
1019 start[i + 1] = tstart[i + 1];
1020 end[i + 1] = tend[i + 1];
1021 (start[i]) ++;
1022 }
1023 i ++;
1024 }
1025 if ((unsigned int )hosts == (unsigned int )((void *)0)) {
1026 tmp___9 = s_malloc((o.no_hostnames + 1UL) * (unsigned long )sizeof(host **));
1027 hosts = (host **)tmp___9;
1028 } else {
1029 tmp___10 = realloc((void *)hosts, (unsigned int )((o.no_hostnames + 1UL) * (unsigned long )sizeof(host **)));
1030 hosts = (host **)tmp___10;
1031 }
1032 i = 0;
1033 while (i < 1) {
1034 while (startc[i] <= endc[i]) {
1035 while (startc[i + 1] <= endc[i + 1]) {
1036 while (startc[i + 2] <= endc[i + 2]) {
1037 while (startc[i + 3] <= endc[i + 3]) {
1038 if (f.debug) {
1039 fprintf((FILE * __restrict )stderr, (char const * __restrict )"list == %i.%i.%i.%i\n",
1040 startc[i], startc[i + 1], startc[i + 2], startc[i + 3]);
1041 fprintf((FILE * __restrict )stderr, (char const * __restrict )"end --> %i.%i.%i.%i\n",
1042 endc[i], endc[i + 1], endc[i + 2], endc[i + 3]);
1043 }
1044 snprintf((char * __restrict )(hostnamet), 8192U, (char const * __restrict )"%i.%i.%i.%i",
1045 startc[i], startc[i + 1], startc[i + 2], startc[i + 3]);
1046 tmp___11 = s_malloc((unsigned long )sizeof(host ));
1047 *(hosts + hostnames) = (host *)tmp___11;
1048 (*(hosts + hostnames))->resolved = (unsigned char)0;
1049 (*(hosts + hostnames))->smtp_open = (unsigned char)0;
1050 (*(hosts + hostnames))->fatal = (unsigned char)0;
1051 (*(hosts + hostnames))->fatal_error = (unsigned char)0;
1052 tmp___12 = strlen((char const *)(hostnamet));
1053 tmp___13 = s_malloc((unsigned long )((tmp___12 + 1U) * sizeof(char )));
1054 (*(hosts + hostnames))->ip_address = (char *)tmp___13;
1055 tmp___14 = strlen((char const *)(hostnamet));
1056 strncpy((char * __restrict )(*(hosts + hostnames))->ip_address,
1057 (char const * __restrict )(hostnamet), tmp___14);
1058 tmp___15 = strlen((char const *)(hostnamet));
1059 *((*(hosts + hostnames))->ip_address + tmp___15) = (char )'\000';
1060 if (f.debug) {
1061 fprintf((FILE * __restrict )stderr, (char const * __restrict )"Hostname == %s",
1062 (*(hosts + hostnames))->ip_address);
1063 }
1064 hostnames ++;
1065 (startc[i + 3]) ++;
1066 }
1067 startc[i + 3] = tstartc[i + 3];
1068 endc[i + 3] = tendc[i + 3];
1069 (startc[i + 2]) ++;
1070 }
1071 startc[i + 2] = tstartc[i + 2];
1072 endc[i + 2] = tendc[i + 2];
1073 (startc[i + 1]) ++;
1074 }
1075 startc[i + 1] = tstartc[i + 1];
1076 endc[i + 1] = tendc[i + 1];
1077 (startc[i]) ++;
1078 }
1079 i ++;
1080 }
1081 if (last) {
1082 goto END;
1083 }
1084 if ((unsigned int )iprange2 != (unsigned int )((void *)0)) {
1085 free((void *)iprange2);
1086 iprange2 = (char *)((void *)0);
1087 }
1088 strncpy((char * __restrict )(buf), (char const * __restrict )t, 8192U);
1089 t = p;
1090 i = 0;
1091 }
1092 }
1093 if (t) {
1094 if ((unsigned int )iprange2 != (unsigned int )((void *)0)) {
1095 free((void *)iprange2);
1096 iprange2 = (char *)((void *)0);
1097 }
1098 strncpy((char * __restrict )(buf), (char const * __restrict )t, 8192U);
1099 t = p;
1100 i = 0;
1101 last = 1;
1102 goto GETIP;
1103 }
1104 }
1105 END:
1106 if ((unsigned int )iprange2 != (unsigned int )((void *)0)) {
1107 free((void *)iprange2);
1108 iprange2 = (char *)((void *)0);
1109 }
1110 return (0);
1111 }
1112 }
1113 int parse_config(char *configfile )
1114 { FILE *fd ;
1115 int i ;
1116 int nolines ;
1117 char *buf1 ;
1118 char buf2[3][250] ;
1119 char c ;
1120 int tmp ;
1121 void *tmp___0 ;
1122 void *tmp___1 ;
1123 char *tmp___2 ;
1124 char *tmp___3 ;
1125 char *tmp___4 ;
1126 void *tmp___5 ;
1127 size_t tmp___6 ;
1128 void *tmp___7 ;
1129 size_t tmp___8 ;
1130 size_t tmp___9 ;
1131 size_t tmp___10 ;
1132 void *tmp___11 ;
1133 size_t tmp___12 ;
1134 size_t tmp___13 ;
1135 size_t tmp___14 ;
1136 void *tmp___15 ;
1137 size_t tmp___16 ;
1138 size_t tmp___17 ;
1139 int tmp___18 ;
1140 char *tmp___19 ;
1141
1142 {
1143 i = 0;
1144 nolines = 0;
1145 fd = fopen((char const * __restrict )configfile, (char const * __restrict )"r");
1146 if ((unsigned int )fd == (unsigned int )((void *)0)) {
1147 fatal((char *)"Unable to open config file \"%s\"\n", configfile);
1148 }
1149 while (1) {
1150 tmp = fgetc(fd);
1151 c = (char )tmp;
1152 if (! ((int )c != -1)) {
1153 break;
1154 }
1155 if ((int )c == 10) {
1156 nolines ++;
1157 }
1158 }
1159 nolines ++;
1160 rewind(fd);
1161 tmp___0 = s_malloc((unsigned long )((unsigned int )nolines * sizeof(rule **)));
1162 rules = (rule **)tmp___0;
1163 i = 0;
1164 tmp___1 = s_malloc((unsigned long )(352U * sizeof(char )));
1165 buf1 = (char *)tmp___1;
1166 while (1) {
1167 tmp___19 = fgets((char * __restrict )buf1, 350, (FILE * __restrict )fd);
1168 if (! tmp___19) {
1169 break;
1170 }
1171 if ((int )*(buf1 + 0) == 35) {
1172 continue;
1173 } else {
1174 if ((int )*(buf1 + 0) == 10) {
1175 continue;
1176 } else {
1177 if ((int )*(buf1 + 0) == 32) {
1178 continue;
1179 }
1180 }
1181 }
1182 tmp___2 = strstr((char const *)buf1, "--NAME--");
1183 if ((unsigned int )tmp___2 != (unsigned int )((void *)0)) {
1184 goto _L;
1185 } else {
1186 tmp___3 = strstr((char const *)buf1, "--DOMAIN--");
1187 if ((unsigned int )tmp___3 != (unsigned int )((void *)0)) {
1188 _L: /* CIL Label */
1189 if (! f.send_email) {
1190 fatal((char *)"You can only use the --NAME-- and --DOMAIN-- macro\'s if you supply the -b (email_address) option");
1191 }
1192 f.got_name_macro = (unsigned char)1;
1193 }
1194 }
1195 if (! f.resolve_hostnames) {
1196 tmp___4 = strstr((char const *)buf1, "--HOSTNAME--");
1197 if ((unsigned int )tmp___4 != (unsigned int )((void *)0)) {
1198 fatal((char *)"You can only use the --HOSTNAME-- macro\'s in the configuration file\nif you specify the -n option on the command line or set RESOLVEDOMAINS:Yes in the auto config file\n");
1199 }
1200 }
1201 tmp___18 = sscanf((char const * __restrict )buf1, (char const * __restrict )"%240s%240s%240s",
1202 buf2[0], buf2[1], buf2[2]);
1203 if (tmp___18 == 3) {
1204 tmp___5 = s_malloc((unsigned long )sizeof(rule *));
1205 *(rules + i) = (rule *)tmp___5;
1206 tmp___6 = strlen((char const *)(buf2[0]));
1207 tmp___7 = s_malloc((unsigned long )((tmp___6 + 1U) * sizeof(char )));
1208 (*(rules + i))->helo = (char *)tmp___7;
1209 tmp___8 = strlen((char const *)(buf2[0]));
1210 strncpy((char * __restrict )(*(rules + i))->helo, (char const * __restrict )(buf2[0]),
1211 tmp___8);
1212 tmp___9 = strlen((char const *)(buf2[0]));
1213 *((*(rules + i))->helo + tmp___9) = (char )'\000';
1214 debug((char *)"Rules->helo: %s\n", (*(rules + i))->helo);
1215 tmp___10 = strlen((char const *)(buf2[1]));
1216 tmp___11 = s_malloc((unsigned long )((tmp___10 + 1U) * sizeof(char )));
1217 (*(rules + i))->mail_from = (char *)tmp___11;
1218 tmp___12 = strlen((char const *)(buf2[1]));
1219 strncpy((char * __restrict )(*(rules + i))->mail_from, (char const * __restrict )(buf2[1]),
1220 tmp___12);
1221 tmp___13 = strlen((char const *)(buf2[1]));
1222 *((*(rules + i))->mail_from + tmp___13) = (char )'\000';
1223 debug((char *)"Rules->mail_from: %s\n", (*(rules + i))->mail_from);
1224 tmp___14 = strlen((char const *)(buf2[2]));
1225 tmp___15 = s_malloc((unsigned long )((tmp___14 + 1U) * sizeof(char )));
1226 (*(rules + i))->rcpt_to = (char *)tmp___15;
1227 tmp___16 = strlen((char const *)(buf2[2]));
1228 strncpy((char * __restrict )(*(rules + i))->rcpt_to, (char const * __restrict )(buf2[2]),
1229 tmp___16);
1230 tmp___17 = strlen((char const *)(buf2[2]));
1231 *((*(rules + i))->rcpt_to + tmp___17) = (char )'\000';
1232 debug((char *)"Rules->rcpt_to: %s\n", (*(rules + i))->rcpt_to);
1233 o.no_rules = (unsigned short )((int )o.no_rules + 1);
1234 i ++;
1235 }
1236 }
1237 o.no_rules = (unsigned short )((int )o.no_rules - 1);
1238 fclose(fd);
1239 return (0);
1240 }
1241 }
1242 int get_email_file(char *email_file )
1243 { FILE *fd ;
1244 char *p ;
1245 char *t ;
1246 char *s ;
1247 char buf[8193] ;
1248 char c ;
1249 char *temp ;
1250 int subject ;
1251 int body ;
1252 int rflag ;
1253 int nflag ;
1254 int size ;
1255 int count ;
1256 int tmp ;
1257 int tmp___0 ;
1258 size_t tmp___1 ;
1259 size_t tmp___2 ;
1260 void *tmp___3 ;
1261 void *tmp___4 ;
1262 char *tmp___5 ;
1263 size_t tmp___6 ;
1264 size_t tmp___7 ;
1265 void *tmp___8 ;
1266 void *tmp___9 ;
1267 char *tmp___10 ;
1268 int tmp___11 ;
1269 char *tmp___12 ;
1270 size_t tmp___13 ;
1271 size_t tmp___14 ;
1272 void *tmp___15 ;
1273 void *tmp___16 ;
1274 char *tmp___17 ;
1275 size_t tmp___18 ;
1276 size_t tmp___19 ;
1277 void *tmp___20 ;
1278 void *tmp___21 ;
1279 char *tmp___22 ;
1280 int tmp___23 ;
1281 char *tmp___24 ;
1282 int tmp___25 ;
1283 int tmp___26 ;
1284 int tmp___27 ;
1285 int tmp___28 ;
1286 int tmp___29 ;
1287 int tmp___30 ;
1288 int tmp___31 ;
1289 int tmp___32 ;
1290 size_t tmp___33 ;
1291 int tmp___34 ;
1292 int tmp___35 ;
1293 size_t tmp___36 ;
1294 char *tmp___37 ;
1295 int tmp___38 ;
1296 int tmp___39 ;
1297 char *tmp___40 ;
1298 int tmp___41 ;
1299 int tmp___42 ;
1300 size_t tmp___43 ;
1301 void *tmp___44 ;
1302 size_t tmp___45 ;
1303 char *tmp___46 ;
1304 size_t tmp___47 ;
1305 void *tmp___48 ;
1306 size_t tmp___49 ;
1307 size_t tmp___50 ;
1308
1309 {
1310 subject = 0;
1311 body = 0;
1312 rflag = 0;
1313 nflag = 0;
1314 size = 0;
1315 count = 0;
1316 fd = fopen((char const * __restrict )email_file, (char const * __restrict )"r");
1317 if ((unsigned int )fd == (unsigned int )((void *)0)) {
1318 fprintf((FILE * __restrict )stderr, (char const * __restrict )"\n\nERROR:\n\nUnable to open the email file [%s] you specified\nDo you wan to continue using the default?\n\nContinue:\t[y] [n]\n:",
1319 email_file);
1320 tmp = fgetc(stdin);
1321 c = (char )tmp;
1322 if ((int )c == 121) {
1323 f.got_email = (unsigned char)0;
1324 return (1);
1325 } else {
1326 tmp___0 = fgetc(stdin);
1327 c = (char )tmp___0;
1328 if ((int )c == 89) {
1329 f.got_email = (unsigned char)0;
1330 return (1);
1331 } else {
1332 exit(1);
1333 }
1334 }
1335 }
1336 while (1) {
1337 tmp___12 = fgets((char * __restrict )(buf), 8192, (FILE * __restrict )fd);
1338 if (! tmp___12) {
1339 break;
1340 }
1341 tmp___11 = strncmp((char const *)(buf), "SUBJECT:", 8U);
1342 if (! tmp___11) {
1343 subject = 1;
1344 p = buf + 8;
1345 if ((int )*p != 0) {
1346 if (f.debug) {
1347 fprintf((FILE * __restrict )stderr, (char const * __restrict )"DEBUG: email subject == [%s]\n",
1348 p);
1349 }
1350 tmp___1 = strlen((char const *)p);
1351 size = (int )tmp___1;
1352 t = strstr((char const *)p, "ENDSUBJECT");
1353 if ((unsigned int )t != (unsigned int )((void *)0)) {
1354 *t = (char )'\000';
1355 tmp___2 = strlen((char const *)p);
1356 size = (int )tmp___2;
1357 tmp___3 = s_malloc((unsigned long )((unsigned int )(size + 1) * sizeof(char )));
1358 o.email_subject = (char *)tmp___3;
1359 strncpy((char * __restrict )o.email_subject, (char const * __restrict )p,
1360 (unsigned int )size);
1361 *(o.email_subject + size) = (char )'\000';
1362 break;
1363 }
1364 tmp___4 = s_malloc((unsigned long )((unsigned int )(size + 1) * sizeof(char )));
1365 o.email_subject = (char *)tmp___4;
1366 strncpy((char * __restrict )o.email_subject, (char const * __restrict )p,
1367 (unsigned int )size);
1368 *(o.email_subject + size) = (char )'\000';
1369 }
1370 while (1) {
1371 tmp___5 = fgets((char * __restrict )(buf), 8192, (FILE * __restrict )fd);
1372 if ((unsigned int )tmp___5 == (unsigned int )((void *)0)) {
1373 subject = 0;
1374 break;
1375 }
1376 tmp___6 = strlen((char const *)(buf));
1377 size = (int )((size_t )size + tmp___6);
1378 if (f.debug) {
1379 fprintf((FILE * __restrict )stderr, (char const * __restrict )"DEBUG: email subject == [%s]\r\n",
1380 buf);
1381 }
1382 t = strstr((char const *)(buf), "ENDSUBJECT");
1383 if ((unsigned int )t != (unsigned int )((void *)0)) {
1384 *t = (char )'\000';
1385 tmp___7 = strlen((char const *)(buf));
1386 size = (int )((size_t )size + tmp___7);
1387 tmp___8 = realloc((void *)o.email_subject, (unsigned int )(size + 2) * sizeof(char ));
1388 o.email_subject = (char *)tmp___8;
1389 if ((unsigned int )o.email_subject == (unsigned int )((void *)0)) {
1390 fatal((char *)"Realloc Error\n");
1391 }
1392 strncat((char * __restrict )o.email_subject, (char const * __restrict )(buf),
1393 (unsigned int )size);
1394 *(o.email + size) = (char )'\000';
1395 break;
1396 }
1397 tmp___9 = realloc((void *)o.email_subject, (unsigned int )(size + 1) * sizeof(char ));
1398 o.email_subject = (char *)tmp___9;
1399 if ((unsigned int )o.email_subject == (unsigned int )((void *)0)) {
1400 fatal((char *)"Realloc Error\n");
1401 }
1402 strncat((char * __restrict )o.email_subject, (char const * __restrict )(buf),
1403 (unsigned int )size);
1404 *(o.email + size) = (char )'\000';
1405 tmp___10 = strstr((char const *)(buf), "ENDSUBJECT");
1406 if (! ((unsigned int )tmp___10 == (unsigned int )((void *)0))) {
1407 break;
1408 }
1409 }
1410 }
1411 }
1412 rewind(fd);
1413 while (1) {
1414 tmp___24 = fgets((char * __restrict )(buf), 8192, (FILE * __restrict )fd);
1415 if (! tmp___24) {
1416 break;
1417 }
1418 tmp___23 = strncmp((char const *)(buf), "BODY:", 5U);
1419 if (! tmp___23) {
1420 body = 1;
1421 p = buf + 5;
1422 if ((int )*p != 0) {
1423 if (f.debug) {
1424 fprintf((FILE * __restrict )stderr, (char const * __restrict )"DEBUG: email body == [%s]\n",
1425 p);
1426 }
1427 tmp___13 = strlen((char const *)p);
1428 size = (int )tmp___13;
1429 t = strstr((char const *)(buf), "ENDBODY");
1430 if ((unsigned int )t != (unsigned int )((void *)0)) {
1431 *t = (char )'\000';
1432 tmp___14 = strlen((char const *)(buf));
1433 size = (int )tmp___14;
1434 tmp___15 = s_malloc((unsigned long )((unsigned int )(size + 1) * sizeof(char )));
1435 o.email = (char *)tmp___15;
1436 strncpy((char * __restrict )o.email, (char const * __restrict )p, (unsigned int )size);
1437 *(o.email + size) = (char )'\000';
1438 break;
1439 }
1440 tmp___16 = s_malloc((unsigned long )((unsigned int )(size + 1) * sizeof(char )));
1441 o.email = (char *)tmp___16;
1442 strncpy((char * __restrict )o.email, (char const * __restrict )p, (unsigned int )size);
1443 *(o.email + size) = (char )'\000';
1444 }
1445 while (1) {
1446 tmp___17 = fgets((char * __restrict )(buf), 8192, (FILE * __restrict )fd);
1447 if ((unsigned int )tmp___17 == (unsigned int )((void *)0)) {
1448 body = 0;
1449 break;
1450 }
1451 tmp___18 = strlen((char const *)(buf));
1452 size = (int )((size_t )size + tmp___18);
1453 if (f.debug) {
1454 fprintf((FILE * __restrict )stderr, (char const * __restrict )"DEBUG: email body == [%s]\n",
1455 buf);
1456 }
1457 t = strstr((char const *)(buf), "ENDBODY");
1458 if ((unsigned int )t != (unsigned int )((void *)0)) {
1459 *t = (char )'\000';
1460 tmp___19 = strlen((char const *)(buf));
1461 size = (int )((size_t )size + tmp___19);
1462 tmp___20 = realloc((void *)o.email, (unsigned int )(size + 1) * sizeof(char ));
1463 o.email = (char *)tmp___20;
1464 if ((unsigned int )o.email == (unsigned int )((void *)0)) {
1465 fatal((char *)"Realloc Error\n");
1466 }
1467 strncat((char * __restrict )o.email, (char const * __restrict )(buf),
1468 (unsigned int )size);
1469 *(o.email + size) = (char )'\000';
1470 break;
1471 }
1472 tmp___21 = realloc((void *)o.email, (unsigned int )(size + 1) * sizeof(char ));
1473 o.email = (char *)tmp___21;
1474 if ((unsigned int )o.email == (unsigned int )((void *)0)) {
1475 fatal((char *)"Realloc Error\n");
1476 }
1477 strncat((char * __restrict )o.email, (char const * __restrict )(buf),
1478 (unsigned int )size);
1479 *(o.email + size) = (char )'\000';
1480 tmp___22 = strstr((char const *)(buf), "ENDBODY");
1481 if (! ((unsigned int )tmp___22 == (unsigned int )((void *)0))) {
1482 break;
1483 }
1484 }
1485 }
1486 }
1487 if (! body) {
1488 goto _L;
1489 } else {
1490 if (! subject) {
1491 _L: /* CIL Label */
1492 fprintf((FILE * __restrict )stderr, (char const * __restrict )"\n\nERROR:\n\nEmail file is in the wrong format\nDo you want to continue using the default?\n\nContinue\t[y] [n]\t:");
1493 tmp___25 = fgetc(stdin);
1494 c = (char )tmp___25;
1495 if ((int )c == 121) {
1496 f.got_email = (unsigned char)0;
1497 return (1);
1498 } else {
1499 tmp___26 = fgetc(stdin);
1500 c = (char )tmp___26;
1501 if ((int )c == 89) {
1502 f.got_email = (unsigned char)0;
1503 return (1);
1504 } else {
1505 exit(1);
1506 }
1507 }
1508 }
1509 }
1510 if (! o.email) {
1511 fprintf((FILE * __restrict )stderr, (char const * __restrict )"\n\nERROR:\n\nThe body of your email is empty\nDo you want to continue using the default?\n\nContinue\t[y] [n]\t:");
1512 tmp___27 = fgetc(stdin);
1513 c = (char )tmp___27;
1514 if ((int )c == 121) {
1515 f.got_email = (unsigned char)0;
1516 return (1);
1517 } else {
1518 tmp___28 = fgetc(stdin);
1519 c = (char )tmp___28;
1520 if ((int )c == 89) {
1521 f.got_email = (unsigned char)0;
1522 return (1);
1523 } else {
1524 exit(1);
1525 }
1526 }
1527 }
1528 if (! o.email_subject) {
1529 fprintf((FILE * __restrict )stderr, (char const * __restrict )"\n\nERROR:\n\nThe subject of your email is empty\nDo you want to continue using the default?\n\nContinue\t[y] [n]\t:");
1530 tmp___29 = fgetc(stdin);
1531 c = (char )tmp___29;
1532 if ((int )c == 121) {
1533 f.got_email = (unsigned char)0;
1534 return (1);
1535 } else {
1536 tmp___30 = fgetc(stdin);
1537 c = (char )tmp___30;
1538 if ((int )c == 89) {
1539 f.got_email = (unsigned char)0;
1540 return (1);
1541 } else {
1542 exit(1);
1543 }
1544 }
1545 }
1546 tmp___33 = strlen((char const *)o.email);
1547 if (tmp___33 < 2U) {
1548 fprintf((FILE * __restrict )stderr, (char const * __restrict )"\n\nERROR:\n\nThe body of your email contains 1 character\nDo you want to continue using the default?\n\nContinue\t[y] [n]\t:");
1549 tmp___31 = fgetc(stdin);
1550 c = (char )tmp___31;
1551 if ((int )c == 121) {
1552 f.got_email = (unsigned char)0;
1553 return (1);
1554 } else {
1555 tmp___32 = fgetc(stdin);
1556 c = (char )tmp___32;
1557 if ((int )c == 89) {
1558 f.got_email = (unsigned char)0;
1559 return (1);
1560 } else {
1561 exit(1);
1562 }
1563 }
1564 }
1565 tmp___36 = strlen((char const *)o.email_subject);
1566 if (tmp___36 < 2U) {
1567 fprintf((FILE * __restrict )stderr, (char const * __restrict )"\n\nERROR:\n\nThe subject of your email contains 1 character\nDo you want to continue using the default?\n\nContinue\t[y] [n]\t:");
1568 tmp___34 = fgetc(stdin);
1569 c = (char )tmp___34;
1570 if ((int )c == 121) {
1571 f.got_email = (unsigned char)0;
1572 return (1);
1573 } else {
1574 tmp___35 = fgetc(stdin);
1575 c = (char )tmp___35;
1576 if ((int )c == 89) {
1577 f.got_email = (unsigned char)0;
1578 return (1);
1579 } else {
1580 exit(1);
1581 }
1582 }
1583 }
1584 p = o.email_subject;
1585 while (1) {
1586 if ((int )*p == 10) {
1587 nflag ++;
1588 }
1589 if ((int )*p == 13) {
1590 rflag ++;
1591 }
1592 tmp___37 = p;
1593 p ++;
1594 if (! ((int )*tmp___37 != 0)) {
1595 break;
1596 }
1597 }
1598 if (nflag > 1) {
1599 goto _L___2;
1600 } else {
1601 if (rflag > 1) {
1602 _L___2: /* CIL Label */
1603 fprintf((FILE * __restrict )stderr, (char const * __restrict )"\n\nERROR:\n\nThere is more than one line feed in the email subject\nDo you want to continue using the default?\n\nContinue\t[y] [n]\t:");
1604 tmp___38 = fgetc(stdin);
1605 c = (char )tmp___38;
1606 if ((int )c == 121) {
1607 f.got_email = (unsigned char)0;
1608 return (1);
1609 } else {
1610 tmp___39 = fgetc(stdin);
1611 c = (char )tmp___39;
1612 if ((int )c == 89) {
1613 f.got_email = (unsigned char)0;
1614 return (1);
1615 } else {
1616 exit(1);
1617 }
1618 }
1619 } else {
1620 if (nflag == 0) {
1621 if (rflag == 0) {
1622 strcat((char * __restrict )o.email_subject, (char const * __restrict )"\r\n");
1623 } else {
1624 goto _L___1;
1625 }
1626 } else {
1627 _L___1: /* CIL Label */
1628 if (nflag == 0) {
1629 if (rflag == 1) {
1630 strcat((char * __restrict )o.email_subject, (char const * __restrict )"\r");
1631 } else {
1632 goto _L___0;
1633 }
1634 } else {
1635 _L___0: /* CIL Label */
1636 if (nflag == 1) {
1637 if (rflag == 1) {
1638 nflag = 0;
1639 rflag = 0;
1640 p = o.email_subject;
1641 while (1) {
1642 if ((int )*p == 10) {
1643 s = p;
1644 *s = (char )((int )*s - 1);
1645 if (*s == 13) {
1646 rflag ++;
1647 }
1648 }
1649 tmp___40 = p;
1650 p ++;
1651 if (! ((int )*tmp___40 != 0)) {
1652 break;
1653 }
1654 }
1655 if (! rflag) {
1656 fprintf((FILE * __restrict )stderr, (char const * __restrict )"\n\nERROR:\n\nThere is supurious carraige return in the subject\nDo you want to continue using the default?\n\nContinue\t[y] [n]\t:");
1657 tmp___41 = fgetc(stdin);
1658 c = (char )tmp___41;
1659 if ((int )c == 121) {
1660 f.got_email = (unsigned char)0;
1661 return (1);
1662 } else {
1663 tmp___42 = fgetc(stdin);
1664 c = (char )tmp___42;
1665 if ((int )c == 89) {
1666 f.got_email = (unsigned char)0;
1667 return (1);
1668 } else {
1669 exit(1);
1670 }
1671 }
1672 }
1673 }
1674 }
1675 }
1676 }
1677 }
1678 }
1679 tmp___43 = strlen((char const *)o.email);
1680 tmp___44 = s_malloc((unsigned long )((tmp___43 + 1U) * sizeof(char )));
1681 temp = (char *)tmp___44;
1682 tmp___45 = strlen((char const *)o.email);
1683 strncpy((char * __restrict )temp, (char const * __restrict )o.email, tmp___45);
1684 p = temp;
1685 rflag = 0;
1686 count = 0;
1687 memset((void *)(buf), 0, 8192U);
1688 while (1) {
1689 if ((int )*p == 10) {
1690 if (! count) {
1691 strncat((char * __restrict )(buf), (char const * __restrict )"\r\n", 8192U);
1692 rflag ++;
1693 rflag ++;
1694 goto __Cont;
1695 }
1696 s = p;
1697 *s = (char )((int )*s - 1);
1698 if (*s != 13) {
1699 strncat((char * __restrict )(buf), (char const * __restrict )"\r\n", 8192U);
1700 rflag ++;
1701 rflag ++;
1702 goto __Cont;
1703 }
1704 }
1705 if ((int )*p == 0) {
1706 break;
1707 }
1708 buf[rflag] = *p;
1709 count ++;
1710 rflag ++;
1711 __Cont: /* CIL Label */
1712 tmp___46 = p;
1713 p ++;
1714 if (! ((int )*tmp___46 != 0)) {
1715 break;
1716 }
1717 }
1718 tmp___47 = strlen((char const *)(buf));
1719 tmp___48 = realloc((void *)o.email, (tmp___47 + 1U) * sizeof(char ));
1720 o.email = (char *)tmp___48;
1721 if ((unsigned int )o.email == (unsigned int )((void *)0)) {
1722 fatal((char *)"Realloc Error\n");
1723 }
1724 tmp___49 = strlen((char const *)(buf));
1725 strncpy((char * __restrict )o.email, (char const * __restrict )(buf), tmp___49);
1726 tmp___50 = strlen((char const *)(buf));
1727 *(o.email + tmp___50) = (char )'\000';
1728 if (f.debug) {
1729 fprintf((FILE * __restrict )stderr, (char const * __restrict )"DEBUG: end subject == [%s]\n",
1730 o.email_subject);
1731 fprintf((FILE * __restrict )stderr, (char const * __restrict )"DEBUG: end body == [%s]\n",
1732 o.email);
1733 }
1734 free((void *)temp);
1735 return (0);
1736 }
1737 }
1738 int parse_aconfig(void)
1739 { FILE *fd ;
1740 char buf[8192] ;
1741 char *p ;
1742 size_t tmp ;
1743 void *tmp___0 ;
1744 size_t tmp___1 ;
1745 char *tmp___2 ;
1746 size_t tmp___3 ;
1747 size_t tmp___4 ;
1748 void *tmp___5 ;
1749 size_t tmp___6 ;
1750 char *tmp___7 ;
1751 size_t tmp___8 ;
1752 size_t tmp___9 ;
1753 void *tmp___10 ;
1754 size_t tmp___11 ;
1755 char *tmp___12 ;
1756 size_t tmp___13 ;
1757 int tmp___14 ;
1758 size_t tmp___15 ;
1759 void *tmp___16 ;
1760 size_t tmp___17 ;
1761 char *tmp___18 ;
1762 size_t tmp___19 ;
1763 size_t tmp___20 ;
1764 void *tmp___21 ;
1765 size_t tmp___22 ;
1766 char *tmp___23 ;
1767 size_t tmp___24 ;
1768 size_t tmp___25 ;
1769 void *tmp___26 ;
1770 size_t tmp___27 ;
1771 char *tmp___28 ;
1772 size_t tmp___29 ;
1773 size_t tmp___30 ;
1774 void *tmp___31 ;
1775 size_t tmp___32 ;
1776 char *tmp___33 ;
1777 size_t tmp___34 ;
1778 int tmp___35 ;
1779 int tmp___36 ;
1780 int tmp___37 ;
1781 int tmp___38 ;
1782 int tmp___39 ;
1783 int tmp___40 ;
1784 int tmp___41 ;
1785 int tmp___42 ;
1786 int tmp___43 ;
1787 size_t tmp___44 ;
1788 void *tmp___45 ;
1789 size_t tmp___46 ;
1790 char *tmp___47 ;
1791 size_t tmp___48 ;
1792 int tmp___49 ;
1793 int tmp___50 ;
1794 int tmp___51 ;
1795 int tmp___52 ;
1796 int tmp___53 ;
1797 int tmp___54 ;
1798 int tmp___55 ;
1799 int tmp___56 ;
1800 int tmp___57 ;
1801 int tmp___58 ;
1802 int tmp___59 ;
1803 int tmp___60 ;
1804 int tmp___61 ;
1805 int tmp___62 ;
1806 int tmp___63 ;
1807 int tmp___64 ;
1808 int tmp___65 ;
1809 int tmp___66 ;
1810 char *tmp___67 ;
1811
1812 {
1813 fd = fopen((char const * __restrict )o.auto_config_file, (char const * __restrict )"r");
1814 if ((unsigned int )fd == (unsigned int )((void *)0)) {
1815 fatal((char *)"Unable to open auto config file %s\n\n", o.auto_config_file);
1816 }
1817 while (1) {
1818 tmp___67 = fgets((char * __restrict )(buf), 8191, (FILE * __restrict )fd);
1819 if (! ((unsigned int )tmp___67 != (unsigned int )((void *)0))) {
1820 break;
1821 }
1822 if ((int )buf[0] == 35) {
1823 continue;
1824 } else {
1825 if ((int )buf[1] == 35) {
1826 continue;
1827 } else {
1828 if ((int )buf[0] == 32) {
1829 continue;
1830 } else {
1831 if ((int )buf[0] == 10) {
1832 continue;
1833 }
1834 }
1835 }
1836 }
1837 tmp___66 = strncmp((char const *)(buf), "IPRANGE:", 8U);
1838 if (tmp___66) {
1839 tmp___65 = strncmp((char const *)(buf), "CONFIGFILE:", 11U);
1840 if (tmp___65) {
1841 tmp___64 = strncmp((char const *)(buf), "WEBPAGE:", 8U);
1842 if (tmp___64) {
1843 tmp___63 = strncmp((char const *)(buf), "THREADS:", 8U);
1844 if (tmp___63) {
1845 tmp___62 = strncmp((char const *)(buf), "IPLIST:", 7U);
1846 if (tmp___62) {
1847 tmp___61 = strncmp((char const *)(buf), "RELAYEMAIL:", 11U);
1848 if (tmp___61) {
1849 tmp___60 = strncmp((char const *)(buf), "MBOXMAILBOX:", 12U);
1850 if (tmp___60) {
1851 tmp___59 = strncmp((char const *)(buf), "MAILDIRMAILBOX:", 15U);
1852 if (tmp___59) {
1853 tmp___58 = strncmp((char const *)(buf), "ALLSCANS:", 9U);
1854 if (tmp___58) {
1855 tmp___57 = strncmp((char const *)(buf), "RESOLVEDOMAINS:",
1856 15U);
1857 if (tmp___57) {
1858 tmp___56 = strncmp((char const *)(buf), "CONNECTTIMEOUT:",
1859 15U);
1860 if (tmp___56) {
1861 tmp___55 = strncmp((char const *)(buf), "READTIMEOUT:",
1862 12U);
1863 if (tmp___55) {
1864 tmp___54 = strncmp((char const *)(buf), "WAITFORMAILTIME:",
1865 16U);
1866 if (tmp___54) {
1867 tmp___53 = strncmp((char const *)(buf), "EMAILTEMPLATE:",
1868 14U);
1869 if (tmp___53) {
1870 tmp___52 = strncmp((char const *)(buf), "DISPLAYONLYIPS:",
1871 15U);
1872 if (tmp___52) {
1873 fatal((char *)"Detected error \"%s\" in configuration file...\n",
1874 buf);
1875 } else {
1876 p = & buf[15];
1877 tmp___49 = strncmp((char const *)p, "Yes", 3U);
1878 if (tmp___49) {
1879 tmp___50 = strncmp((char const *)p, "YES", 3U);
1880 if (tmp___50) {
1881 tmp___51 = strncmp((char const *)p, "yes",
1882 3U);
1883 if (! tmp___51) {
1884 f.display_only_ips = (unsigned char)1;
1885 }
1886 } else {
1887 f.display_only_ips = (unsigned char)1;
1888 }
1889 } else {
1890 f.display_only_ips = (unsigned char)1;
1891 }
1892 }
1893 } else {
1894 if (! f.got_email) {
1895 p = & buf[14];
1896 f.got_email = (unsigned char)1;
1897 tmp___44 = strlen((char const *)p);
1898 tmp___45 = s_malloc((unsigned long )((tmp___44 + 1U) * sizeof(char )));
1899 o.email_template = (char *)tmp___45;
1900 tmp___46 = strlen((char const *)p);
1901 tmp___47 = chomp(p);
1902 strncpy((char * __restrict )o.email_template, (char const * __restrict )tmp___47,
1903 tmp___46);
1904 tmp___48 = strlen((char const *)p);
1905 *(o.email_template + tmp___48) = (char )'\000';
1906 }
1907 }
1908 } else {
1909 if (! o.m_timeout == 60) {
1910 p = & buf[16];
1911 tmp___43 = atoi((char const *)p);
1912 o.m_timeout = (unsigned short )tmp___43;
1913 }
1914 }
1915 } else {
1916 if (! o.r_timeout) {
1917 p = & buf[12];
1918 tmp___42 = atoi((char const *)p);
1919 o.r_timeout = (unsigned short )tmp___42;
1920 }
1921 }
1922 } else {
1923 if (! o.c_timeout) {
1924 p = & buf[15];
1925 tmp___41 = atoi((char const *)p);
1926 o.c_timeout = (unsigned short )tmp___41;
1927 }
1928 }
1929 } else {
1930 p = & buf[15];
1931 tmp___38 = strncmp((char const *)p, "Yes", 3U);
1932 if (tmp___38) {
1933 tmp___39 = strncmp((char const *)p, "YES", 3U);
1934 if (tmp___39) {
1935 tmp___40 = strncmp((char const *)p, "yes", 3U);
1936 if (! tmp___40) {
1937 f.resolve_hostnames = (unsigned char)1;
1938 }
1939 } else {
1940 f.resolve_hostnames = (unsigned char)1;
1941 }
1942 } else {
1943 f.resolve_hostnames = (unsigned char)1;
1944 }
1945 }
1946 } else {
1947 p = & buf[9];
1948 tmp___35 = strncmp((char const *)p, "Yes", 3U);
1949 if (tmp___35) {
1950 tmp___36 = strncmp((char const *)p, "YES", 3U);
1951 if (tmp___36) {
1952 tmp___37 = strncmp((char const *)p, "yes", 3U);
1953 if (! tmp___37) {
1954 f.display_all = (unsigned char)1;
1955 }
1956 } else {
1957 f.display_all = (unsigned char)1;
1958 }
1959 } else {
1960 f.display_all = (unsigned char)1;
1961 }
1962 }
1963 } else {
1964 if (! f.check_mailbox) {
1965 p = & buf[15];
1966 f.check_mailbox = (unsigned char)1;
1967 f.maildir = (unsigned char)1;
1968 tmp___30 = strlen((char const *)p);
1969 tmp___31 = s_malloc((unsigned long )((tmp___30 + 1U) * sizeof(char )));
1970 o.mailbox = (char *)tmp___31;
1971 tmp___32 = strlen((char const *)p);
1972 tmp___33 = chomp(p);
1973 strncpy((char * __restrict )o.mailbox, (char const * __restrict )tmp___33,
1974 tmp___32);
1975 tmp___34 = strlen((char const *)p);
1976 *(o.mailbox + tmp___34) = (char )'\000';
1977 }
1978 f.maildir = (unsigned char)1;
1979 }
1980 } else {
1981 if (! f.check_mailbox) {
1982 p = & buf[12];
1983 f.check_mailbox = (unsigned char)1;
1984 f.mbox = (unsigned char)1;
1985 tmp___25 = strlen((char const *)p);
1986 tmp___26 = s_malloc((unsigned long )((tmp___25 + 1U) * sizeof(char )));
1987 o.mailbox = (char *)tmp___26;
1988 tmp___27 = strlen((char const *)p);
1989 tmp___28 = chomp(p);
1990 strncpy((char * __restrict )o.mailbox, (char const * __restrict )tmp___28,
1991 tmp___27);
1992 tmp___29 = strlen((char const *)p);
1993 *(o.mailbox + tmp___29) = (char )'\000';
1994 }
1995 f.mbox = (unsigned char)1;
1996 }
1997 } else {
1998 if (! f.send_email) {
1999 p = & buf[11];
2000 f.send_email = (unsigned char)1;
2001 tmp___20 = strlen((char const *)p);
2002 tmp___21 = s_malloc((unsigned long )((tmp___20 + 1U) * sizeof(char )));
2003 o.email_address = (char *)tmp___21;
2004 tmp___22 = strlen((char const *)p);
2005 tmp___23 = chomp(p);
2006 strncpy((char * __restrict )o.email_address, (char const * __restrict )tmp___23,
2007 tmp___22);
2008 tmp___24 = strlen((char const *)p);
2009 *(o.email_address + tmp___24) = (char )'\000';
2010 }
2011 }
2012 } else {
2013 if (! f.ip_list) {
2014 p = & buf[7];
2015 if (f.ip_range) {
2016 fatal((char *)"IPLIST and IPRANGE can\'t both be define in the config file\n");
2017 }
2018 f.ip_list = (unsigned char)1;
2019 tmp___15 = strlen((char const *)p);
2020 tmp___16 = s_malloc((unsigned long )((tmp___15 + 1U) * sizeof(char ) + 1U));
2021 o.ip_list = (char *)tmp___16;
2022 tmp___17 = strlen((char const *)p);
2023 tmp___18 = chomp(p);
2024 strncpy((char * __restrict )o.ip_list, (char const * __restrict )tmp___18,
2025 tmp___17);
2026 tmp___19 = strlen((char const *)p);
2027 *(o.ip_list + tmp___19) = (char )'\000';
2028 }
2029 }
2030 } else {
2031 if (! f.threads) {
2032 p = & buf[8];
2033 tmp___14 = atoi((char const *)p);
2034 o.number_of_threads = (unsigned short )tmp___14;
2035 }
2036 }
2037 } else {
2038 if (! f.output_html) {
2039 p = & buf[8];
2040 f.output_html = (unsigned char)1;
2041 tmp___9 = strlen((char const *)p);
2042 tmp___10 = s_malloc((unsigned long )((tmp___9 + 1U) * sizeof(char )));
2043 o.html_file = (char *)tmp___10;
2044 tmp___11 = strlen((char const *)p);
2045 tmp___12 = chomp(p);
2046 strncpy((char * __restrict )o.html_file, (char const * __restrict )tmp___12,
2047 tmp___11);
2048 tmp___13 = strlen((char const *)p);
2049 *(o.html_file + tmp___13) = (char )'\000';
2050 }
2051 }
2052 } else {
2053 if (! f.config_file) {
2054 p = & buf[11];
2055 f.config_file = (unsigned char)1;
2056 tmp___4 = strlen((char const *)p);
2057 tmp___5 = s_malloc((unsigned long )((tmp___4 + 1U) * sizeof(char )));
2058 o.config_file = (char *)tmp___5;
2059 tmp___6 = strlen((char const *)p);
2060 tmp___7 = chomp(p);
2061 strncpy((char * __restrict )o.config_file, (char const * __restrict )tmp___7,
2062 tmp___6);
2063 tmp___8 = strlen((char const *)p);
2064 *(o.config_file + tmp___8) = (char )'\000';
2065 }
2066 }
2067 } else {
2068 if (! f.ip_range) {
2069 p = & buf[8];
2070 f.ip_range = (unsigned char)1;
2071 tmp = strlen((char const *)p);
2072 tmp___0 = s_malloc((unsigned long )((tmp + 1U) * sizeof(char )));
2073 o.ip_range = (char *)tmp___0;
2074 tmp___1 = strlen((char const *)p);
2075 tmp___2 = chomp(p);
2076 strncpy((char * __restrict )o.ip_range, (char const * __restrict )tmp___2,
2077 tmp___1);
2078 tmp___3 = strlen((char const *)p);
2079 *(o.ip_range + tmp___3) = (char )'\000';
2080 }
2081 }
2082 }
2083 return (0);
2084 }
2085 }
2086 #pragma merger(0,"/tmp/cil-yhUmpuTR.i","-Wall,-g,-pthread")
2087 char *get_sender_address(char *string ) ;
2088 int is_mbox_seperator(char *string ) ;
2089 extern DIR *opendir(char const *__name ) __attribute__((__nonnull__(1))) ;
2090 extern int closedir(DIR *__dirp ) __attribute__((__nonnull__(1))) ;
2091 extern struct dirent *readdir(DIR *__dirp ) __attribute__((__nonnull__(1))) ;
2092 int parse_mbox(void)
2093 { FILE *fd ;
2094 char buf[8193] ;
2095 char temp[8193] ;
2096 char *email_address ;
2097 int tmp ;
2098 int tmp___0 ;
2099 char *tmp___1 ;
2100 int tmp___2 ;
2101 char *tmp___3 ;
2102
2103 {
2104 email_address = (char *)((void *)0);
2105 fd = fopen((char const * __restrict )o.mailbox, (char const * __restrict )"r");
2106 if ((unsigned int )fd == (unsigned int )((void *)0)) {
2107 fprintf((FILE * __restrict )stderr, (char const * __restrict )"Unable to open %s for reading\n",
2108 o.mailbox);
2109 exit(1);
2110 }
2111 while (1) {
2112 tmp___3 = fgets((char * __restrict )(buf), 8192, (FILE * __restrict )fd);
2113 if (! ((unsigned int )tmp___3 != (unsigned int )((void *)0))) {
2114 break;
2115 }
2116 START:
2117 strncpy((char * __restrict )(temp), (char const * __restrict )(buf), 8192U);
2118 temp[8192] = (char )'\000';
2119 tmp___2 = is_mbox_seperator(temp);
2120 if (tmp___2) {
2121 strncpy((char * __restrict )(temp), (char const * __restrict )(buf), 8192U);
2122 temp[8192] = (char )'\000';
2123 email_address = get_sender_address(temp);
2124 if ((unsigned int )email_address == (unsigned int )((void *)0)) {
2125 continue;
2126 }
2127 while (1) {
2128 tmp___1 = fgets((char * __restrict )(buf), 8192, (FILE * __restrict )fd);
2129 if (! ((unsigned int )tmp___1 != (unsigned int )((void *)0))) {
2130 break;
2131 }
2132 tmp = strncmp((char const *)(buf), ":SmtpRCKey:", 11U);
2133 if (! tmp) {
2134 check_mail_file(email_address, buf);
2135 }
2136 strncpy((char * __restrict )(temp), (char const * __restrict )(buf), 8192U);
2137 temp[8192] = (char )'\000';
2138 tmp___0 = is_mbox_seperator(temp);
2139 if (tmp___0) {
2140 goto START;
2141 }
2142 }
2143 }
2144 }
2145 fclose(fd);
2146 return (0);
2147 }
2148 }
2149 int parse_maildir(void)
2150 { DIR *dip ;
2151 FILE *fd ;
2152 struct dirent *dit ;
2153 char dir[8193] ;
2154 char buf[8193] ;
2155 char temp[8193] ;
2156 char filename[8193] ;
2157 char *email_address ;
2158 size_t tmp ;
2159 size_t tmp___0 ;
2160 int tmp___1 ;
2161 int tmp___2 ;
2162 char *tmp___3 ;
2163 int tmp___4 ;
2164
2165 {
2166 email_address = (char *)((void *)0);
2167 tmp = strlen((char const *)o.mailbox);
2168 if ((int )*(o.mailbox + tmp) == 47) {
2169 snprintf((char * __restrict )(dir), 8192U, (char const * __restrict )"%snew",
2170 o.mailbox);
2171 } else {
2172 snprintf((char * __restrict )(dir), 8192U, (char const * __restrict )"%s/new",
2173 o.mailbox);
2174 }
2175 dir[8192] = (char )'\000';
2176 dip = opendir((char const *)(dir));
2177 if ((unsigned int )dip == (unsigned int )((void *)0)) {
2178 perror("opendir");
2179 fatal((char *)"error opening maildir folder (%s)", dir);
2180 }
2181 while (1) {
2182 dit = readdir(dip);
2183 if (! ((unsigned int )dit != (unsigned int )((void *)0))) {
2184 break;
2185 }
2186 if ((int )dit->d_name[0] == 46) {
2187 tmp___0 = strlen((char const *)(dit->d_name));
2188 if (tmp___0 < 3U) {
2189 continue;
2190 }
2191 }
2192 snprintf((char * __restrict )(filename), 8192U, (char const * __restrict )"%s/%s",
2193 dir, dit->d_name);
2194 filename[8192] = (char )'\000';
2195 fd = fopen((char const * __restrict )(filename), (char const * __restrict )"r");
2196 if ((unsigned int )fd == (unsigned int )((void *)0)) {
2197 fprintf((FILE * __restrict )stderr, (char const * __restrict )"Unable to open mailfile (%s) for reading... Skipping\n",
2198 filename);
2199 continue;
2200 }
2201 while (1) {
2202 tmp___3 = fgets((char * __restrict )(buf), 8192, (FILE * __restrict )fd);
2203 if (! ((unsigned int )tmp___3 != (unsigned int )((void *)0))) {
2204 break;
2205 }
2206 tmp___1 = strncmp((char const *)(buf), "From: ", 6U);
2207 if (! tmp___1) {
2208 strncpy((char * __restrict )(temp), (char const * __restrict )(buf), 8192U);
2209 temp[8192] = (char )'\000';
2210 email_address = get_sender_address(temp);
2211 if ((unsigned int )email_address == (unsigned int )((void *)0)) {
2212 continue;
2213 }
2214 }
2215 tmp___2 = strncmp((char const *)(buf), ":SmtpRCKey:", 11U);
2216 if (! tmp___2) {
2217 check_mail_file(email_address, buf);
2218 }
2219 }
2220 }
2221 tmp___4 = closedir(dip);
2222 if (tmp___4 == -1) {
2223 perror("closedir");
2224 return (0);
2225 }
2226 return (0);
2227 }
2228 }
2229 int parse_popbox(void)
2230 {
2231
2232 {
2233 return (0);
2234 }
2235 }
2236 int is_mbox_seperator(char *string )
2237 { char tmp[9][8193] ;
2238 int count ;
2239 char *word ;
2240 int tmp___0 ;
2241
2242 {
2243 count = 0;
2244 tmp___0 = strncmp((char const *)string, "From ", 5U);
2245 if (tmp___0) {
2246 return (0);
2247 } else {
2248 word = strtok((char * __restrict )string, (char const * __restrict )" ");
2249 while (word) {
2250 count ++;
2251 if (count < 8) {
2252 strncpy((char * __restrict )(tmp[count]), (char const * __restrict )word,
2253 8191U);
2254 }
2255 word = strtok((char * __restrict )((void *)0), (char const * __restrict )" ");
2256 }
2257 if (count == 7) {
2258 return (1);
2259 } else {
2260 return (0);
2261 }
2262 }
2263 }
2264 }
2265 char *get_sender_address(char *string )
2266 { int count ;
2267 char *word ;
2268 char *address ;
2269 size_t tmp ;
2270 void *tmp___0 ;
2271 size_t tmp___1 ;
2272 size_t tmp___2 ;
2273 size_t tmp___3 ;
2274
2275 {
2276 count = 0;
2277 address = (char *)((void *)0);
2278 word = strtok((char * __restrict )string, (char const * __restrict )" ");
2279 while (word) {
2280 count ++;
2281 if (count == 2) {
2282 tmp___3 = strlen((char const *)word);
2283 if (tmp___3 > 5U) {
2284 tmp = strlen((char const *)word);
2285 tmp___0 = s_malloc((unsigned long )((tmp + 1U) * sizeof(char )));
2286 address = (char *)tmp___0;
2287 tmp___1 = strlen((char const *)word);
2288 strncpy((char * __restrict )address, (char const * __restrict )word, tmp___1 + 2U);
2289 tmp___2 = strlen((char const *)word);
2290 *(address + (tmp___2 + 1U)) = (char )'\000';
2291 break;
2292 }
2293 }
2294 word = strtok((char * __restrict )((void *)0), (char const * __restrict )" ");
2295 }
2296 if ((unsigned int )address != (unsigned int )((void *)0)) {
2297 return (address);
2298 } else {
2299 return ((char *)((void *)0));
2300 }
2301 }
2302 }
2303 #pragma merger(0,"/tmp/cil-kzMrYIFm.i","-Wall,-g,-pthread")
2304 extern int usleep(__useconds_t __useconds ) ;
2305 int thread_start(long cur_host ) ;
2306 int cleaner_start(void) ;
2307 extern int nanosleep(struct timespec const *__requested_time , struct timespec *__remaining ) ;
2308 extern __attribute__((__nothrow__)) int pthread_create(pthread_t * __restrict __newthread ,
2309 pthread_attr_t const * __restrict __attr ,
2310 void *(*__start_routine)(void * ) ,
2311 void * __restrict __arg ) __attribute__((__nonnull__(1,3))) ;
2312 extern int pthread_join(pthread_t __th , void **__thread_return ) ;
2313 extern __attribute__((__nothrow__)) pthread_t pthread_self(void) __attribute__((__const__)) ;
2314 extern __attribute__((__nothrow__)) int pthread_attr_init(pthread_attr_t *__attr ) __attribute__((__nonnull__(1))) ;
2315 extern __attribute__((__nothrow__)) int pthread_attr_getstacksize(pthread_attr_t const * __restrict __attr ,
2316 size_t * __restrict __stacksize ) __attribute__((__nonnull__(1,2))) ;
2317 extern __attribute__((__nothrow__)) int pthread_attr_setstacksize(pthread_attr_t *__attr ,
2318 size_t __stacksize ) __attribute__((__nonnull__(1))) ;
2319 extern __attribute__((__nothrow__)) int pthread_mutex_init(pthread_mutex_t *__mutex ,
2320 pthread_mutexattr_t const *__mutexattr ) __attribute__((__nonnull__(1))) ;
2321 extern __attribute__((__nothrow__)) int pthread_mutex_lock(pthread_mutex_t *__mutex ) __attribute__((__nonnull__(1))) ;
2322 extern __attribute__((__nothrow__)) int pthread_mutex_unlock(pthread_mutex_t *__mutex ) __attribute__((__nonnull__(1))) ;
2323 int relay_check(int *sockfd , long cur_host ) ;
2324 pthread_mutex_t main_thread_count_mutex ;
2325 void start_scan(void)
2326 { struct timespec tv ;
2327 pthread_t c_tid ;
2328 pthread_attr_t attr ;
2329 unsigned char flag ;
2330 unsigned char res ;
2331 int x ;
2332 int ret ;
2333 size_t stack_size ;
2334 void *tmp ;
2335 int tmp___0 ;
2336 int tmp___1 ;
2337
2338 {
2339 flag = (unsigned char)0;
2340 res = (unsigned char)0;
2341 x = 0;
2342 ret = 0;
2343 tv.tv_sec = 0L;
2344 tv.tv_nsec = 500000000L;
2345 pthread_mutex_init(& main_thread_count_mutex, (pthread_mutexattr_t const *)((void *)0));
2346 ret = pthread_attr_getstacksize((pthread_attr_t const * __restrict )(& attr),
2347 (size_t * __restrict )(& stack_size));
2348 if (ret != 0) {
2349 fatal((char *)"cannot get stacksize");
2350 }
2351 debug((char *)"\n\nstack size: %d\n", stack_size);
2352 stack_size = 28672U;
2353 ret = pthread_attr_init(& attr);
2354 ret = pthread_attr_setstacksize(& attr, stack_size);
2355 if (ret != 0) {
2356 fatal((char *)"cannot setting stacksize");
2357 }
2358 ret = pthread_attr_getstacksize((pthread_attr_t const * __restrict )(& attr),
2359 (size_t * __restrict )(& stack_size));
2360 if (ret != 0) {
2361 fatal((char *)"cannot get stacksize");
2362 }
2363 debug((char *)"\n\nstack size: %d\n", stack_size);
2364 tmp = s_malloc((o.no_hostnames + 1UL) * (unsigned long )sizeof(pthread_t ));
2365 o.tid = (pthread_t *)tmp;
2366 x = 0;
2367 while ((unsigned long )x < o.no_hostnames) {
2368 *(o.tid + x) = 0UL;
2369 x ++;
2370 }
2371 tmp___0 = pthread_create((pthread_t * __restrict )(& c_tid), (pthread_attr_t const * __restrict )(& attr),
2372 (void *(*)(void * ))((void *)(& cleaner_start)), (void * __restrict )((void *)0));
2373 if (tmp___0 != 0) {
2374 fatal((char *)"Unable to start cleaner thread");
2375 perror("aa");
2376 }
2377 o.cur_host = 0UL;
2378 while (o.cur_host < o.no_hostnames) {
2379 pthread_mutex_lock(& main_thread_count_mutex);
2380 while ((int )o.cur_threads >= (int )o.number_of_threads) {
2381 pthread_mutex_unlock(& main_thread_count_mutex);
2382 debug((char *)"Sleeping cur child == %d, max child == %d\n", o.cur_threads,
2383 o.number_of_threads);
2384 nanosleep((struct timespec const *)(& tv), (struct timespec *)((void *)0));
2385 }
2386 pthread_mutex_unlock(& main_thread_count_mutex);
2387 while (1) {
2388 tmp___1 = pthread_create((pthread_t * __restrict )(& c_tid), (pthread_attr_t const * __restrict )(& attr),
2389 (void *(*)(void * ))((void *)(& thread_start)), (void * __restrict )((int *)o.cur_host));
2390 res = (unsigned char )tmp___1;
2391 if (! ((int )res != 0)) {
2392 break;
2393 }
2394 if ((int )res != 11) {
2395 fatal((char *)"Unable to create thread - (try reducing the number of threads)\n");
2396 }
2397 if (! flag) {
2398 error((char *)"** Failed to create thread!!\nTrying to use sleep to compensate.... although you should run this again with a lower value for -p\n\n");
2399 flag = (unsigned char )((int )flag + 1);
2400 }
2401 usleep(200000U);
2402 }
2403 debug((char *)"Created thread\n");
2404 pthread_mutex_lock(& main_thread_count_mutex);
2405 o.cur_threads = (unsigned short )((int )o.cur_threads + 1);
2406 pthread_mutex_unlock(& main_thread_count_mutex);
2407 (o.cur_host) ++;
2408 }
2409 flag = (unsigned char)0;
2410 pthread_mutex_lock(& main_thread_count_mutex);
2411 while ((int )o.cur_threads > 0) {
2412 pthread_mutex_unlock(& main_thread_count_mutex);
2413 flag = (unsigned char )((int )flag + 1);
2414 if (f.debug) {
2415 goto _L;
2416 } else {
2417 if ((int )f.verbose > 1) {
2418 _L: /* CIL Label */
2419 if ((int )flag > 1) {
2420 fprintf((FILE * __restrict )stderr, (char const * __restrict )"O.cur_childs(%d) id greater than zero...... sleepingz\n",
2421 o.cur_threads);
2422 flag = (unsigned char)0;
2423 }
2424 }
2425 }
2426 nanosleep((struct timespec const *)(& tv), (struct timespec *)((void *)0));
2427 }
2428 pthread_mutex_unlock(& main_thread_count_mutex);
2429 return;
2430 }
2431 }
2432 int cleaner_start(void)
2433 { int x ;
2434 int tmp ;
2435
2436 {
2437 x = 0;
2438 while (1) {
2439 x = 0;
2440 while ((unsigned long )x < o.no_hostnames) {
2441 if ((int )*(o.tid + x)) {
2442 tmp = pthread_join(*(o.tid + x), (void **)((void *)0));
2443 if (! tmp) {
2444 pthread_mutex_lock(& main_thread_count_mutex);
2445 o.cur_threads = (unsigned short )((int )o.cur_threads - 1);
2446 pthread_mutex_unlock(& main_thread_count_mutex);
2447 *(o.tid + x) = 0UL;
2448 }
2449 }
2450 x ++;
2451 }
2452 usleep(200000U);
2453 }
2454 return (0);
2455 }
2456 }
2457 int thread_start(long cur_host )
2458 { int sockfd ;
2459 int counter ;
2460 int x ;
2461 int res ;
2462 long ip ;
2463 char hostnamer[8193] ;
2464 char *tmp ;
2465 size_t tmp___0 ;
2466 void *tmp___1 ;
2467 size_t tmp___2 ;
2468 size_t tmp___3 ;
2469 size_t tmp___4 ;
2470 int tmp___5 ;
2471 void *tmp___6 ;
2472 void *tmp___7 ;
2473
2474 {
2475 counter = 0;
2476 x = 0;
2477 res = 0;
2478 debug((char *)"Starting thread_start process\n");
2479 debug((char *)"hostname == %s o.cur_host == %d\n", (*(hosts + cur_host))->ip_address,
2480 (int )cur_host);
2481 ip = get_ip((*(hosts + cur_host))->ip_address);
2482 if (ip == -1L) {
2483 debug((char *)"Couldn\'t resolve ip\n");
2484 *(o.tid + cur_host) = pthread_self();
2485 return ((int )((void *)0));
2486 }
2487 sockfd = tcp_connect(ip);
2488 if (sockfd != -1) {
2489 counter ++;
2490 if (f.resolve_hostnames) {
2491 tmp = get_hostname((char const *)(*(hosts + cur_host))->ip_address);
2492 strncpy((char * __restrict )(hostnamer), (char const * __restrict )tmp,
2493 8192U);
2494 hostnamer[8192] = (char )'\000';
2495 tmp___4 = strlen((char const *)(*(hosts + cur_host))->ip_address);
2496 tmp___5 = strncmp((char const *)(*(hosts + cur_host))->ip_address, (char const *)(hostnamer),
2497 tmp___4);
2498 if (tmp___5) {
2499 tmp___0 = strlen((char const *)(hostnamer));
2500 tmp___1 = s_malloc((unsigned long )((tmp___0 + 1U) * sizeof(char )));
2501 (*(hosts + cur_host))->hostname = (char *)tmp___1;
2502 tmp___2 = strlen((char const *)(hostnamer));
2503 strncpy((char * __restrict )(*(hosts + cur_host))->hostname, (char const * __restrict )(hostnamer),
2504 tmp___2);
2505 tmp___3 = strlen((char const *)(hostnamer));
2506 *((*(hosts + cur_host))->hostname + tmp___3) = (char )'\000';
2507 (*(hosts + cur_host))->resolved = (unsigned char)1;
2508 }
2509 }
2510 (*(hosts + cur_host))->smtp_open = (unsigned char)1;
2511 tmp___6 = s_malloc((unsigned long )((unsigned int )((int )o.no_rules + 1) * sizeof(check **)));
2512 (*(hosts + cur_host))->smtp_check = (check **)tmp___6;
2513 x = 0;
2514 while (x <= (int )o.no_rules) {
2515 tmp___7 = s_malloc((unsigned long )sizeof(check ));
2516 *((*(hosts + cur_host))->smtp_check + x) = (check *)tmp___7;
2517 (*((*(hosts + cur_host))->smtp_check + x))->failed = (unsigned char)0;
2518 (*((*(hosts + cur_host))->smtp_check + x))->passed = (unsigned char)0;
2519 (*((*(hosts + cur_host))->smtp_check + x))->error_code = (unsigned char)0;
2520 x ++;
2521 }
2522 res = relay_check(& sockfd, cur_host);
2523 if (res == -1) {
2524 close(sockfd);
2525 }
2526 close(sockfd);
2527 } else {
2528 close(sockfd);
2529 }
2530 *(o.tid + cur_host) = pthread_self();
2531 return ((int )((void *)0));
2532 }
2533 }
2534 /* compiler builtin:
2535 void __builtin_va_end(__builtin_va_list ) ; */
2536 /* compiler builtin:
2537 void __builtin_va_start(__builtin_va_list ) ; */
2538 #pragma merger(0,"/tmp/cil-5Ceo1BbJ.i","-Wall,-g,-pthread")
2539 extern struct _IO_FILE *stdout ;
2540 extern int fflush(FILE *__stream ) ;
2541 extern int vfprintf(FILE * __restrict __s , char const * __restrict __format ,
2542 __gnuc_va_list __arg ) ;
2543 extern __attribute__((__nothrow__)) void *malloc(size_t __size ) __attribute__((__malloc__)) ;
2544 extern __attribute__((__nothrow__)) void *calloc(size_t __nmemb , size_t __size ) __attribute__((__malloc__)) ;
2545 void *s_zmalloc(int size ) ;
2546 void swap_macro(char *string , char const *replace , char const *macro ) ;
2547 void convert_rule(char *string , int ind ) ;
2548 int check_file_path(char *filename , char *path ) ;
2549 void return_data(long cur_host , int rule___0 , char *string ) ;
2550 void not_implemented(void) ;
2551 void *s_malloc(unsigned long size )
2552 { void *mymem ;
2553
2554 {
2555 if (size < 0UL) {
2556 fatal((char *)"Tried to allocate a negative amount of memory!!");
2557 }
2558 mymem = malloc((unsigned int )size);
2559 if ((unsigned int )mymem == (unsigned int )((void *)0)) {
2560 fatal((char *)"Malloc failed! Probably out of memory!!");
2561 }
2562 return (mymem);
2563 }
2564 }
2565 void *s_zmalloc(int size )
2566 { void *mymem ;
2567
2568 {
2569 if (size < 0) {
2570 fatal((char *)"Tried to allocate a negative amount of memory!!");
2571 }
2572 mymem = calloc(1U, (unsigned int )size);
2573 if ((unsigned int )mymem == (unsigned int )((void *)0)) {
2574 fatal((char *)"Malloc failed! Probably out of memory!!");
2575 }
2576 return (mymem);
2577 }
2578 }
2579 char *chomp(char *string )
2580 { int len ;
2581 size_t tmp ;
2582
2583 {
2584 tmp = strlen((char const *)string);
2585 len = (int )tmp;
2586 if (len < 1) {
2587 return (string);
2588 }
2589 if ((int )*(string + (len - 1)) != 10) {
2590 if ((int )*(string + (len - 1)) != 13) {
2591 return (string);
2592 }
2593 }
2594 if (len > 1) {
2595 if ((int )*(string + (len - 2)) == 13) {
2596 *(string + (len - 2)) = (char )'\000';
2597 } else {
2598 *(string + (len - 1)) = (char )'\000';
2599 }
2600 } else {
2601 *(string + (len - 1)) = (char )'\000';
2602 }
2603 return (string);
2604 }
2605 }
2606 void swap_rule(char *dest , char const *rule___0 , int hostn )
2607 { char *tmp ;
2608 char *tmp___0 ;
2609 char *tmp___1 ;
2610 char *tmp___2 ;
2611 char *tmp___3 ;
2612
2613 {
2614 strncpy((char * __restrict )dest, (char const * __restrict )rule___0, 8192U);
2615 *(dest + 8192) = (char )'\000';
2616 tmp = strstr(rule___0, "--NAME--");
2617 if ((unsigned int )tmp != (unsigned int )((void *)0)) {
2618 swap_macro(dest, (char const *)o.name, "--NAME--");
2619 }
2620 tmp___0 = strstr(rule___0, "--DOMAIN--");
2621 if ((unsigned int )tmp___0 != (unsigned int )((void *)0)) {
2622 swap_macro(dest, (char const *)o.domain, "--DOMAIN--");
2623 }
2624 tmp___1 = strstr(rule___0, "--IP_ADDRESS--");
2625 if ((unsigned int )tmp___1 != (unsigned int )((void *)0)) {
2626 swap_macro(dest, (char const *)(*(hosts + hostn))->ip_address, "--IP_ADDRESS--");
2627 }
2628 tmp___3 = strstr(rule___0, "--HOSTNAME--");
2629 if ((unsigned int )tmp___3 != (unsigned int )((void *)0)) {
2630 if (f.resolve_hostnames) {
2631 if ((*(hosts + hostn))->resolved) {
2632 swap_macro(dest, (char const *)(*(hosts + hostn))->hostname, "--HOSTNAME--");
2633 } else {
2634 goto _L___0;
2635 }
2636 } else {
2637 goto _L___0;
2638 }
2639 } else {
2640 _L___0: /* CIL Label */
2641 tmp___2 = strstr(rule___0, "--HOSTNAME--");
2642 if ((unsigned int )tmp___2 != (unsigned int )((void *)0)) {
2643 if (f.resolve_hostnames) {
2644 swap_macro(dest, (char const *)(*(hosts + hostn))->ip_address, "--HOSTNAME--");
2645 }
2646 }
2647 }
2648 return;
2649 }
2650 }
2651 void swap_macro(char *string , char const *replace , char const *macro )
2652 { char *p ;
2653 char *buf ;
2654 void *tmp ;
2655 size_t tmp___0 ;
2656
2657 {
2658 tmp = s_malloc((unsigned long )(8193U * sizeof(char )));
2659 buf = (char *)tmp;
2660 while (1) {
2661 p = strstr((char const *)string, macro);
2662 if (! ((unsigned int )p != (unsigned int )((void *)0))) {
2663 break;
2664 }
2665 memcpy((void * __restrict )buf, (void const * __restrict )string, (unsigned int )(p - string));
2666 *(buf + (p - string)) = (char )'\000';
2667 tmp___0 = strlen(macro);
2668 p += tmp___0;
2669 strncat((char * __restrict )buf, (char const * __restrict )replace, 8192U);
2670 strncat((char * __restrict )buf, (char const * __restrict )p, 8192U);
2671 *(buf + 8192) = (char )'\000';
2672 strncpy((char * __restrict )string, (char const * __restrict )buf, 8192U);
2673 *(string + 8192) = (char )'\000';
2674 }
2675 free((void *)buf);
2676 return;
2677 }
2678 }
2679 void convert_rule(char *string , int ind )
2680 { char *buf ;
2681 void *tmp ;
2682
2683 {
2684 tmp = s_malloc((unsigned long )(8193U * sizeof(char )));
2685 buf = (char *)tmp;
2686 if (ind == 1) {
2687 snprintf((char * __restrict )buf, 8192U, (char const * __restrict )"HELO %s\r\n",
2688 string);
2689 strncpy((char * __restrict )string, (char const * __restrict )buf, 8192U);
2690 *(string + 8192) = (char )'\000';
2691 } else {
2692 if (ind == 2) {
2693 snprintf((char * __restrict )buf, 8192U, (char const * __restrict )"MAIL FROM:%s\r\n",
2694 string);
2695 strncpy((char * __restrict )string, (char const * __restrict )buf, 8192U);
2696 *(string + 8192) = (char )'\000';
2697 } else {
2698 if (ind == 3) {
2699 snprintf((char * __restrict )buf, 8192U, (char const * __restrict )"RCPT TO:%s\r\n",
2700 string);
2701 strncpy((char * __restrict )string, (char const * __restrict )buf, 8192U);
2702 *(string + 8192) = (char )'\000';
2703 }
2704 }
2705 }
2706 return;
2707 }
2708 }
2709 void debug(char *fmt , ...)
2710 { va_list ap ;
2711
2712 {
2713 if (f.debug) {
2714 __builtin_va_start(ap, fmt);
2715 fflush(stdout);
2716 fprintf((FILE * __restrict )stdout, (char const * __restrict )"DEBUG: ");
2717 vfprintf((FILE * __restrict )stderr, (char const * __restrict )fmt, ap);
2718 fprintf((FILE * __restrict )stderr, (char const * __restrict )"\n");
2719 __builtin_va_end(ap);
2720 }
2721 return;
2722 }
2723 }
2724 int check_file_path(char *filename , char *path )
2725 { char *s ;
2726 char *p ;
2727 int slash_flag ;
2728 char *fn ;
2729 FILE *fd ;
2730 size_t tmp ;
2731 void *tmp___0 ;
2732 size_t tmp___1 ;
2733 size_t tmp___2 ;
2734 char *tmp___3 ;
2735 size_t tmp___4 ;
2736 void *tmp___5 ;
2737 size_t tmp___6 ;
2738 size_t tmp___7 ;
2739
2740 {
2741 slash_flag = 0;
2742 fd = fopen((char const * __restrict )filename, (char const * __restrict )"w");
2743 if ((unsigned int )fd == (unsigned int )((void *)0)) {
2744 return (-1);
2745 }
2746 fclose(fd);
2747 tmp = strlen((char const *)filename);
2748 tmp___0 = s_malloc((unsigned long )((tmp + 1U) * sizeof(char )));
2749 fn = (char *)tmp___0;
2750 tmp___1 = strlen((char const *)filename);
2751 strncpy((char * __restrict )fn, (char const * __restrict )filename, tmp___1);
2752 tmp___2 = strlen((char const *)filename);
2753 *(fn + tmp___2) = (char )'\000';
2754 s = fn;
2755 while (1) {
2756 tmp___3 = s;
2757 s ++;
2758 if (! *tmp___3) {
2759 break;
2760 }
2761 if ((int )*s == 47) {
2762 p = s;
2763 slash_flag = 1;
2764 }
2765 }
2766 p ++;
2767 *p = (char )'\000';
2768 if (! slash_flag) {
2769 tmp___4 = strlen("./");
2770 tmp___5 = s_malloc((unsigned long )((tmp___4 + 2U) * sizeof(char )));
2771 path = (char *)tmp___5;
2772 tmp___6 = strlen("./");
2773 strncpy((char * __restrict )path, (char const * __restrict )"./", tmp___6);
2774 tmp___7 = strlen("./");
2775 *(path + tmp___7) = (char )'\000';
2776 } else {
2777 strncpy((char * __restrict )path, (char const * __restrict )fn, 8192U);
2778 *(path + 8192) = (char )'\000';
2779 }
2780 free((void *)fn);
2781 return (0);
2782 }
2783 }
2784 void return_data(long cur_host , int rule___0 , char *string )
2785 { char *buf ;
2786 void *tmp ;
2787
2788 {
2789 tmp = s_zmalloc((int )(8193U * sizeof(char )));
2790 buf = (char *)tmp;
2791 snprintf((char * __restrict )buf, 8192U, (char const * __restrict )"Subject: %s\r\n%s\r\n\r\n:SmtpRCKey:%d:%s:%d:\r\n\r\n.\r\n",
2792 o.email_subject, o.email, (int )o.time, (*(hosts + cur_host))->ip_address,
2793 rule___0);
2794 strncpy((char * __restrict )string, (char const * __restrict )buf, 8192U);
2795 *(string + 8192) = (char )'\000';
2796 return;
2797 }
2798 }
2799 void set_defaults(void)
2800 { size_t tmp ;
2801 void *tmp___0 ;
2802 size_t tmp___1 ;
2803 size_t tmp___2 ;
2804 size_t tmp___3 ;
2805 void *tmp___4 ;
2806 size_t tmp___5 ;
2807 size_t tmp___6 ;
2808
2809 {
2810 o.number_of_threads = (unsigned short)1000;
2811 o.c_timeout = (unsigned short)10;
2812 o.r_timeout = (unsigned short)60;
2813 o.m_timeout = (unsigned short)60;
2814 tmp = strlen("/usr/local/etc/smtprc/rcheck.conf");
2815 tmp___0 = s_malloc((unsigned long )((tmp + 1U) * sizeof(char )));
2816 o.config_file = (char *)tmp___0;
2817 tmp___1 = strlen("/usr/local/etc/smtprc/rcheck.conf");
2818 strncpy((char * __restrict )o.config_file, (char const * __restrict )"/usr/local/etc/smtprc/rcheck.conf",
2819 tmp___1);
2820 tmp___2 = strlen("/usr/local/etc/smtprc/rcheck.conf");
2821 *(o.config_file + tmp___2) = (char )'\000';
2822 f.config_file = (unsigned char)1;
2823 tmp___3 = strlen("/usr/local/etc/smtprc/email.tmpl");
2824 tmp___4 = s_malloc((unsigned long )((tmp___3 + 1U) * sizeof(char )));
2825 o.email_template = (char *)tmp___4;
2826 tmp___5 = strlen("/usr/local/etc/smtprc/email.tmpl");
2827 strncpy((char * __restrict )o.email_template, (char const * __restrict )"/usr/local/etc/smtprc/email.tmpl",
2828 tmp___5);
2829 tmp___6 = strlen("/usr/local/etc/smtprc/email.tmpl");
2830 *(o.email_template + tmp___6) = (char )'\000';
2831 f.email_template = (unsigned char)1;
2832 return;
2833 }
2834 }
2835 void not_implemented(void)
2836 {
2837
2838 {
2839 fatal((char *)"Sorry, This function is not yet implemented");
2840 return;
2841 }
2842 }
2843 #pragma merger(0,"/tmp/cil-VVVPpkmc.i","-Wall,-g,-pthread")
2844 void print_html_header(FILE *fd , char *title ) ;
2845 void print_html_footer(FILE *fd , long smtp_open___0 ) ;
2846 void print_link(FILE *fd , char *link___0 , char *text , char *color ) ;
2847 void print_check(FILE *fd , long x , int y , char *color ) ;
2848 void print_errord_check(FILE *fd , long x , int y , char *color ) ;
2849 void print_check_details(char *filename , long host___0 ) ;
2850 void print_quit(FILE *fd , long x , int y , char *color ) ;
2851 char *escape_html_chars(char *string , char *s ) ;
2852 char *passed = (char *)"smtprc_passed.html";
2853 char *errord = (char *)"smtprc_errord.html";
2854 char *failed_file ;
2855 long smtp_open = 0L;
2856 void display_html(void)
2857 { FILE *failed_fd ;
2858 FILE *passed_fd ;
2859 FILE *errord_fd ;
2860 char buf[8192] ;
2861 char *p ;
2862 char *s ;
2863 char *boo ;
2864 int failed ;
2865 int failed_count ;
2866 int passed_count ;
2867 int errord_count ;
2868 int count ;
2869 long x ;
2870 int y ;
2871 size_t tmp ;
2872 void *tmp___0 ;
2873 size_t tmp___1 ;
2874 size_t tmp___2 ;
2875 char *tmp___3 ;
2876 size_t tmp___4 ;
2877 void *tmp___5 ;
2878 size_t tmp___6 ;
2879 size_t tmp___7 ;
2880 size_t tmp___8 ;
2881 void *tmp___9 ;
2882 size_t tmp___10 ;
2883 size_t tmp___11 ;
2884
2885 {
2886 failed = 0;
2887 failed_count = 0;
2888 passed_count = 0;
2889 errord_count = 0;
2890 count = 0;
2891 x = 0L;
2892 y = 0;
2893 tmp = strlen((char const *)o.html_file);
2894 tmp___0 = s_malloc((unsigned long )((tmp + 1U) * sizeof(char )));
2895 boo = (char *)tmp___0;
2896 tmp___1 = strlen((char const *)o.html_file);
2897 strncpy((char * __restrict )boo, (char const * __restrict )o.html_file, tmp___1);
2898 tmp___2 = strlen((char const *)o.html_file);
2899 *(boo + tmp___2) = (char )'\000';
2900 p = boo;
2901 while (1) {
2902 tmp___3 = p;
2903 p ++;
2904 if (! *tmp___3) {
2905 break;
2906 }
2907 if ((int )*p == 47) {
2908 count ++;
2909 p ++;
2910 s = p;
2911 }
2912 }
2913 if (! count) {
2914 tmp___4 = strlen((char const *)o.html_file);
2915 tmp___5 = s_malloc((unsigned long )((tmp___4 + 1U) * sizeof(char )));
2916 failed_file = (char *)tmp___5;
2917 tmp___6 = strlen((char const *)o.html_file);
2918 strncpy((char * __restrict )failed_file, (char const * __restrict )o.html_file,
2919 tmp___6);
2920 tmp___7 = strlen((char const *)o.html_file);
2921 *(failed_file + tmp___7) = (char )'\000';
2922 } else {
2923 tmp___8 = strlen((char const *)s);
2924 tmp___9 = s_malloc((unsigned long )((tmp___8 + 1U) * sizeof(char )));
2925 failed_file = (char *)tmp___9;
2926 tmp___10 = strlen((char const *)s);
2927 strncpy((char * __restrict )failed_file, (char const * __restrict )s, tmp___10);
2928 tmp___11 = strlen((char const *)s);
2929 *(failed_file + tmp___11) = (char )'\000';
2930 }
2931 count = 0;
2932 failed_fd = fopen((char const * __restrict )o.html_file, (char const * __restrict )"w");
2933 if ((unsigned int )failed_fd == (unsigned int )((void *)0)) {
2934 fatal((char *)"Unable to open html file");
2935 }
2936 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s",
2937 o.html_path, passed);
2938 passed_fd = fopen((char const * __restrict )(buf), (char const * __restrict )"w");
2939 if ((unsigned int )passed_fd == (unsigned int )((void *)0)) {
2940 fatal((char *)"Unable to open html file");
2941 }
2942 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s",
2943 o.html_path, errord);
2944 errord_fd = fopen((char const * __restrict )(buf), (char const * __restrict )"w");
2945 if ((unsigned int )errord_fd == (unsigned int )((void *)0)) {
2946 fatal((char *)"Unable to open html file");
2947 }
2948 print_html_header(failed_fd, (char *)"SMTP Relay Checker");
2949 print_html_header(passed_fd, (char *)"SMTP Relay Checker");
2950 print_html_header(errord_fd, (char *)"SMTP Relay Checker");
2951 fprintf((FILE * __restrict )failed_fd, (char const * __restrict )"<font size=\"1\">Scans marked in <font color=\"orange\">Orange</font> are suspected open relays</font><br />\n");
2952 fprintf((FILE * __restrict )failed_fd, (char const * __restrict )"<font size=\"1\">Scans marked in <font color=\"red\">Red</font> are definite open relays</font><br /><br /><br /><br />\n");
2953 fprintf((FILE * __restrict )passed_fd, (char const * __restrict )"<font size=\"1\">Scans marked in <font color=\"blue\">Blue</font> are not open relays and have passed all tests</font><br /><br /><br /><br />\n");
2954 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"<font size=\"1\">Scans marked in <font color=\"black\">Black</font> Closed the connection after it was established (Probably due to a firewall)</font><br />\n");
2955 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"<font size=\"1\">Scans marked in <font color=\"darkblue\">Dark Blue</font> Had restrictions in place to disallow access</font><br />\n");
2956 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"<font size=\"1\">Scans marked in <font color=\"green\">Green</font> Produced Read Timeouts</font><br />\n");
2957 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"<font size=\"1\">Scans marked in <font color=\"purple\">Purple</font> Produced Unknown Errors</font><br /><br /><br /><br />\n");
2958 fprintf((FILE * __restrict )failed_fd, (char const * __restrict )"<table align=\"center\" border=\"0\" cellspacing=\"10\"><tr>\n");
2959 fprintf((FILE * __restrict )passed_fd, (char const * __restrict )"<table align=\"center\" border=\"0\" cellspacing=\"10\"><tr>\n");
2960 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"<table align=\"center\" border=\"0\" cellspacing=\"10\"><tr>\n");
2961 x = 0L;
2962 while ((unsigned long )x < o.no_hostnames) {
2963 if ((*(hosts + x))->smtp_open) {
2964 smtp_open ++;
2965 }
2966 x ++;
2967 }
2968 x = 0L;
2969 while ((unsigned long )x < o.no_hostnames) {
2970 if ((*(hosts + x))->smtp_open) {
2971 y = 0;
2972 while (y <= (int )o.no_rules) {
2973 if ((int )(*((*(hosts + x))->smtp_check + y))->failed == 1) {
2974 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
2975 if (failed < 1) {
2976 failed = 1;
2977 }
2978 }
2979 }
2980 if ((int )(*((*(hosts + x))->smtp_check + y))->failed == 2) {
2981 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
2982 if (failed < 2) {
2983 failed = 2;
2984 }
2985 }
2986 }
2987 y ++;
2988 }
2989 if (failed) {
2990 if (failed == 1) {
2991 fprintf((FILE * __restrict )failed_fd, (char const * __restrict )"<td>");
2992 failed_count ++;
2993 if ((*(hosts + x))->resolved) {
2994 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s.html",
2995 (*(hosts + x))->hostname);
2996 print_link(failed_fd, buf, (*(hosts + x))->hostname, (char *)"orange");
2997 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s.html",
2998 o.html_path, (*(hosts + x))->hostname);
2999 } else {
3000 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s.html",
3001 (*(hosts + x))->ip_address);
3002 print_link(failed_fd, buf, (*(hosts + x))->ip_address, (char *)"orange");
3003 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s.html",
3004 o.html_path, (*(hosts + x))->ip_address);
3005 }
3006 fprintf((FILE * __restrict )failed_fd, (char const * __restrict )"</td>");
3007 if (failed_count % 5 == 0) {
3008 fprintf((FILE * __restrict )failed_fd, (char const * __restrict )"</tr><tr>\n");
3009 }
3010 } else {
3011 if (failed == 2) {
3012 failed_count ++;
3013 fprintf((FILE * __restrict )failed_fd, (char const * __restrict )"<td>");
3014 if ((*(hosts + x))->resolved) {
3015 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s.html",
3016 (*(hosts + x))->hostname);
3017 print_link(failed_fd, buf, (*(hosts + x))->hostname, (char *)"red");
3018 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s.html",
3019 o.html_path, (*(hosts + x))->hostname);
3020 } else {
3021 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s.html",
3022 (*(hosts + x))->ip_address);
3023 print_link(failed_fd, buf, (*(hosts + x))->ip_address, (char *)"red");
3024 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s.html",
3025 o.html_path, (*(hosts + x))->ip_address);
3026 }
3027 fprintf((FILE * __restrict )failed_fd, (char const * __restrict )"</td>");
3028 if (failed_count % 5 == 0) {
3029 fprintf((FILE * __restrict )failed_fd, (char const * __restrict )"</tr><tr>\n");
3030 }
3031 }
3032 }
3033 } else {
3034 if ((*(hosts + x))->fatal_error) {
3035 if ((int )(*(hosts + x))->fatal < 2) {
3036 if ((int )(*((*(hosts + x))->smtp_check + 0))->error_code == 1) {
3037 errord_count ++;
3038 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"<td>");
3039 if ((*(hosts + x))->resolved) {
3040 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s.html",
3041 (*(hosts + x))->hostname);
3042 print_link(errord_fd, buf, (*(hosts + x))->hostname, (char *)"black");
3043 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s.html",
3044 o.html_path, (*(hosts + x))->hostname);
3045 } else {
3046 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s.html",
3047 (*(hosts + x))->ip_address);
3048 print_link(errord_fd, buf, (*(hosts + x))->ip_address, (char *)"black");
3049 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s.html",
3050 o.html_path, (*(hosts + x))->ip_address);
3051 }
3052 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"</td>");
3053 if (errord_count % 5 == 0) {
3054 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"</tr><tr>\n");
3055 }
3056 } else {
3057 goto _L___2;
3058 }
3059 } else {
3060 goto _L___2;
3061 }
3062 } else {
3063 _L___2: /* CIL Label */
3064 if ((*(hosts + x))->fatal_error) {
3065 if ((int )(*(hosts + x))->fatal < 2) {
3066 if ((int )(*((*(hosts + x))->smtp_check + 0))->error_code == 2) {
3067 errord_count ++;
3068 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"<td>");
3069 if ((*(hosts + x))->resolved) {
3070 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s.html",
3071 (*(hosts + x))->hostname);
3072 print_link(errord_fd, buf, (*(hosts + x))->hostname, (char *)"darkblue");
3073 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s.html",
3074 o.html_path, (*(hosts + x))->hostname);
3075 } else {
3076 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s.html",
3077 (*(hosts + x))->ip_address);
3078 print_link(errord_fd, buf, (*(hosts + x))->ip_address, (char *)"darkblue");
3079 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s.html",
3080 o.html_path, (*(hosts + x))->ip_address);
3081 }
3082 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"</td>");
3083 if (errord_count % 5 == 0) {
3084 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"</tr><tr>\n");
3085 }
3086 } else {
3087 goto _L___0;
3088 }
3089 } else {
3090 goto _L___0;
3091 }
3092 } else {
3093 _L___0: /* CIL Label */
3094 if ((int )(*(hosts + x))->fatal_error == 3) {
3095 errord_count ++;
3096 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"<td>");
3097 if ((*(hosts + x))->resolved) {
3098 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s.html",
3099 (*(hosts + x))->hostname);
3100 print_link(errord_fd, buf, (*(hosts + x))->hostname, (char *)"green");
3101 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s.html",
3102 o.html_path, (*(hosts + x))->hostname);
3103 } else {
3104 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s.html",
3105 (*(hosts + x))->ip_address);
3106 print_link(errord_fd, buf, (*(hosts + x))->ip_address, (char *)"green");
3107 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s.html",
3108 o.html_path, (*(hosts + x))->ip_address);
3109 }
3110 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"</td>");
3111 if (errord_count % 5 == 0) {
3112 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"</tr><tr>\n");
3113 }
3114 } else {
3115 if ((*(hosts + x))->fatal_error) {
3116 errord_count ++;
3117 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"<td>");
3118 if ((*(hosts + x))->resolved) {
3119 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s.html",
3120 (*(hosts + x))->hostname);
3121 print_link(errord_fd, buf, (*(hosts + x))->hostname, (char *)"purple");
3122 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s.html",
3123 o.html_path, (*(hosts + x))->hostname);
3124 } else {
3125 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s.html",
3126 (*(hosts + x))->ip_address);
3127 print_link(errord_fd, buf, (*(hosts + x))->ip_address, (char *)"purple");
3128 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s.html",
3129 o.html_path, (*(hosts + x))->ip_address);
3130 }
3131 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"</td>");
3132 if (errord_count % 5 == 0) {
3133 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"</tr><tr>\n");
3134 }
3135 } else {
3136 passed_count ++;
3137 fprintf((FILE * __restrict )passed_fd, (char const * __restrict )"<td>");
3138 if ((*(hosts + x))->resolved) {
3139 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s.html",
3140 (*(hosts + x))->hostname);
3141 print_link(passed_fd, buf, (*(hosts + x))->hostname, (char *)"blue");
3142 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s.html",
3143 o.html_path, (*(hosts + x))->hostname);
3144 } else {
3145 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s.html",
3146 (*(hosts + x))->ip_address);
3147 print_link(passed_fd, buf, (*(hosts + x))->ip_address, (char *)"blue");
3148 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%s%s.html",
3149 o.html_path, (*(hosts + x))->ip_address);
3150 }
3151 fprintf((FILE * __restrict )passed_fd, (char const * __restrict )"</td>");
3152 if (passed_count % 5 == 0) {
3153 fprintf((FILE * __restrict )passed_fd, (char const * __restrict )"</tr><tr>\n");
3154 }
3155 }
3156 }
3157 }
3158 }
3159 }
3160 print_check_details(buf, x);
3161 failed = 0;
3162 }
3163 x ++;
3164 }
3165 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"</tr></table>");
3166 fprintf((FILE * __restrict )failed_fd, (char const * __restrict )"</tr></table>");
3167 fprintf((FILE * __restrict )passed_fd, (char const * __restrict )"</tr></table>");
3168 if (! failed_count) {
3169 fprintf((FILE * __restrict )failed_fd, (char const * __restrict )"<br /><br /><br /><center><font size=\"2\" color=\"black\"><b>No Open Relays Were Found</b></font></center><br /><br /><br />\n");
3170 }
3171 if (! passed_count) {
3172 fprintf((FILE * __restrict )passed_fd, (char const * __restrict )"<br /><br /><br /><center><font size=\"2\" color=\"black\"><b>No Mail Servers Passed The Tests</b></font></center><br /><br /><br />\n");
3173 }
3174 if (! errord_count) {
3175 fprintf((FILE * __restrict )errord_fd, (char const * __restrict )"<br /><br /><br /><center><font size=\"2\" color=\"black\"><b>No Errors Were Encountered While Scanning</b></font></center><br /><br /><br />\n");
3176 }
3177 print_html_footer(failed_fd, smtp_open);
3178 print_html_footer(errord_fd, smtp_open);
3179 print_html_footer(passed_fd, smtp_open);
3180 fclose(failed_fd);
3181 fclose(passed_fd);
3182 fclose(errord_fd);
3183 return;
3184 }
3185 }
3186 void print_check_details(char *filename , long host___0 )
3187 { FILE *fd ;
3188 char color[8193] ;
3189 int y ;
3190
3191 {
3192 y = 0;
3193 fd = fopen((char const * __restrict )filename, (char const * __restrict )"w");
3194 if ((unsigned int )fd == (unsigned int )((void *)0)) {
3195 fatal((char *)"Unable to open file: %s\n", filename);
3196 }
3197 print_html_header(fd, (char *)"SMTP Relay Checker");
3198 y = 0;
3199 while (y <= (int )o.no_rules) {
3200 if ((int )(*((*(hosts + host___0))->smtp_check + y))->failed == 1) {
3201 strncpy((char * __restrict )(color), (char const * __restrict )"orange",
3202 8192U);
3203 color[8192] = (char )'\000';
3204 } else {
3205 if ((int )(*((*(hosts + host___0))->smtp_check + y))->failed == 2) {
3206 strncpy((char * __restrict )(color), (char const * __restrict )"red",
3207 8192U);
3208 color[8192] = (char )'\000';
3209 } else {
3210 if ((*((*(hosts + host___0))->smtp_check + y))->passed) {
3211 strncpy((char * __restrict )(color), (char const * __restrict )"blue",
3212 8192U);
3213 color[8192] = (char )'\000';
3214 } else {
3215 strncpy((char * __restrict )(color), (char const * __restrict )"purple",
3216 8192U);
3217 color[8192] = (char )'\000';
3218 }
3219 }
3220 }
3221 if ((*(hosts + host___0))->fatal_error) {
3222 if (y <= (int )(*(hosts + host___0))->fatal) {
3223 if ((*((*(hosts + host___0))->smtp_check + y))->error_code) {
3224 if ((int )(*((*(hosts + host___0))->smtp_check + y))->error_code < 21) {
3225 print_errord_check(fd, host___0, y, (char *)"green");
3226 } else {
3227 goto _L;
3228 }
3229 } else {
3230 _L: /* CIL Label */
3231 if ((*((*(hosts + host___0))->smtp_check + y))->passed) {
3232 print_check(fd, host___0, y, color);
3233 } else {
3234 if ((*((*(hosts + host___0))->smtp_check + y))->failed) {
3235 print_check(fd, host___0, y, color);
3236 }
3237 }
3238 }
3239 }
3240 } else {
3241 print_check(fd, host___0, y, color);
3242 }
3243 y ++;
3244 }
3245 if ((int )(*((*(hosts + host___0))->smtp_check + o.no_rules))->error_code > 20) {
3246 if ((int )(*(hosts + host___0))->fatal == (int )o.no_rules) {
3247 print_quit(fd, host___0, (int )o.no_rules, (char *)"green");
3248 } else {
3249 goto _L___0;
3250 }
3251 } else {
3252 _L___0: /* CIL Label */
3253 if (! (*(hosts + host___0))->fatal_error) {
3254 print_quit(fd, host___0, (int )o.no_rules, (char *)"blue");
3255 }
3256 }
3257 print_html_footer(fd, smtp_open);
3258 fclose(fd);
3259 return;
3260 }
3261 }
3262 void print_quit(FILE *fd , long x , int y , char *color )
3263 {
3264
3265 {
3266 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n\n<br /><br /><table border=\"0\" cellspacing=\"1\"><font color=\"%s\"><br />\n",
3267 color);
3268 if ((*(hosts + x))->resolved) {
3269 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td colspan=\"2\"><b>Quit sequence for %s [%s]</font></b><br /><br /></td></tr>\n",
3270 (*(hosts + x))->hostname, (*(hosts + x))->ip_address);
3271 } else {
3272 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td colspan=\"2\"><b>Quit sequence for [%s]</font></b><br /><br /></td></tr>\n",
3273 (*(hosts + x))->ip_address);
3274 }
3275 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 21) {
3276 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	A fatal error occured while trying to read/write</font><br /></td></tr>\n",
3277 color);
3278 } else {
3279 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 22) {
3280 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	A fatal error occured while trying to read/write</font><br /></td></tr>\n",
3281 color);
3282 }
3283 }
3284 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">QUIT SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3285 color, "QUIT\r\n");
3286 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">QUIT REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3287 color, (*(hosts + x))->r_quit);
3288 fprintf((FILE * __restrict )fd, (char const * __restrict )"</table></font><br /><br /><br />\n\n");
3289 return;
3290 }
3291 }
3292 void print_errord_check(FILE *fd , long x , int y , char *color )
3293 { char *p ;
3294 char *buf ;
3295 char *tmp ;
3296 char *tmp___0 ;
3297 char *tmp___1 ;
3298 char *tmp___2 ;
3299 char *tmp___3 ;
3300 char *tmp___4 ;
3301 char *tmp___5 ;
3302 char *tmp___6 ;
3303 char *tmp___7 ;
3304 char *tmp___8 ;
3305 char *tmp___9 ;
3306 char *tmp___10 ;
3307 void *tmp___11 ;
3308 char *tmp___12 ;
3309 char *tmp___13 ;
3310 char *tmp___14 ;
3311 char *tmp___15 ;
3312
3313 {
3314 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n\n<br /><br /><table border=\"0\" cellspacing=\"1\"><font color=\"%s\"><br />\n",
3315 color);
3316 if ((*(hosts + x))->resolved) {
3317 tmp = escape_html_chars((*(hosts + x))->ip_address, p);
3318 tmp___0 = escape_html_chars((*(hosts + x))->hostname, p);
3319 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td colspan=\"2\"><b>Results for %s [%s] check %d</font></b><br /><br /></td></tr>\n",
3320 tmp___0, tmp, y);
3321 } else {
3322 tmp___1 = escape_html_chars((*(hosts + x))->ip_address, p);
3323 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td colspan=\"2\"><b>Results for [%s] check %d</font></b><br /><br /></td></tr>\n",
3324 tmp___1, y);
3325 }
3326 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 1) {
3327 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	The server closed the connection.... probably due to a firewall</font><br /></td></tr>\n",
3328 color);
3329 }
3330 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3331 tmp___2 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_banner, p);
3332 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">BANNER:</font><font color=\"black\"></td>\n<td>	%s</font><br /></td></tr>\n",
3333 color, tmp___2);
3334 } else {
3335 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 1) {
3336 tmp___2 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_banner, p);
3337 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">BANNER:</font><font color=\"black\"></td>\n<td>	%s</font><br /></td></tr>\n",
3338 color, tmp___2);
3339 }
3340 }
3341 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 3) {
3342 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	An fatal error occured while trying to read/write HELO</font><br /></td></tr>\n",
3343 color);
3344 } else {
3345 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 4) {
3346 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	An fatal error occured while trying to read/write HELO</font><br /></td></tr>\n",
3347 color);
3348 }
3349 }
3350 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3351 tmp___3 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->helo, p);
3352 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">HELO SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3353 color, tmp___3);
3354 } else {
3355 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 4) {
3356 tmp___3 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->helo, p);
3357 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">HELO SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3358 color, tmp___3);
3359 }
3360 }
3361 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3362 tmp___4 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_helo, p);
3363 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">HELO REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3364 color, tmp___4);
3365 } else {
3366 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 4) {
3367 tmp___4 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_helo, p);
3368 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">HELO REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3369 color, tmp___4);
3370 }
3371 }
3372 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 6) {
3373 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	An fatal error occured while trying to read/write MAIL FROM</font><br /></td></tr>\n",
3374 color);
3375 } else {
3376 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 7) {
3377 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	An fatal error occured while trying to read/write MAIL FROM</font><br /></td></tr>\n",
3378 color);
3379 }
3380 }
3381 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3382 tmp___5 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->mail_from, p);
3383 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">MAIL FROM SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3384 color, tmp___5);
3385 } else {
3386 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 7) {
3387 tmp___5 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->mail_from,
3388 p);
3389 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">MAIL FROM SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3390 color, tmp___5);
3391 }
3392 }
3393 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3394 tmp___6 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_mail_from,
3395 p);
3396 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">MAIL FROM REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3397 color, tmp___6);
3398 } else {
3399 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 7) {
3400 tmp___6 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_mail_from,
3401 p);
3402 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">MAIL FROM REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3403 color, tmp___6);
3404 }
3405 }
3406 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 9) {
3407 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	An fatal error occured while trying to read/write RCPT TO</font><br /></td></tr>\n",
3408 color);
3409 } else {
3410 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 10) {
3411 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	An fatal error occured while trying to read/write RCPT TO</font><br /></td></tr>\n",
3412 color);
3413 }
3414 }
3415 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3416 goto _L;
3417 } else {
3418 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 10) {
3419 _L: /* CIL Label */
3420 if ((int )(*((*(hosts + x))->smtp_check + y))->passed > 3) {
3421 tmp___7 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->rcpt_to,
3422 p);
3423 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">RCPT TO SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3424 color, tmp___7);
3425 }
3426 }
3427 }
3428 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3429 goto _L___0;
3430 } else {
3431 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 10) {
3432 _L___0: /* CIL Label */
3433 if ((int )(*((*(hosts + x))->smtp_check + y))->passed > 3) {
3434 tmp___8 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_rcpt_to,
3435 p);
3436 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">RCPT TO REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3437 color, tmp___8);
3438 }
3439 }
3440 }
3441 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 12) {
3442 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	An fatal error occured while trying to read/write DATA</font><br /></td></tr>\n",
3443 color);
3444 } else {
3445 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 13) {
3446 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	An fatal error occured while trying to read/write DATA</font><br /></td></tr>\n",
3447 color);
3448 }
3449 }
3450 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3451 goto _L___1;
3452 } else {
3453 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 13) {
3454 _L___1: /* CIL Label */
3455 if ((int )(*((*(hosts + x))->smtp_check + y))->passed > 4) {
3456 tmp___9 = escape_html_chars((char *)"DATA\r\n", p);
3457 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">DATA START SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3458 color, tmp___9);
3459 }
3460 }
3461 }
3462 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3463 goto _L___2;
3464 } else {
3465 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 13) {
3466 _L___2: /* CIL Label */
3467 if ((int )(*((*(hosts + x))->smtp_check + y))->passed > 4) {
3468 tmp___10 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_data_start,
3469 p);
3470 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">DATA START REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3471 color, tmp___10);
3472 }
3473 }
3474 }
3475 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 15) {
3476 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	An fatal error occured while trying to read/write DATA</font><br /></td></tr>\n",
3477 color);
3478 } else {
3479 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 16) {
3480 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	An fatal error occured while trying to read/write DATA</font><br /></td></tr>\n",
3481 color);
3482 }
3483 }
3484 tmp___11 = s_malloc((unsigned long )(8193U * sizeof(char )));
3485 buf = (char *)tmp___11;
3486 return_data(x, y, buf);
3487 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3488 goto _L___3;
3489 } else {
3490 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 16) {
3491 _L___3: /* CIL Label */
3492 if ((int )(*((*(hosts + x))->smtp_check + y))->passed > 5) {
3493 tmp___12 = escape_html_chars(buf, p);
3494 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">DATA SENT:</font> 	<font color=\"black\"></td>\n<td><pre>%s</pre></font><br /></td></tr>\n",
3495 color, tmp___12);
3496 }
3497 }
3498 }
3499 free((void *)buf);
3500 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3501 goto _L___4;
3502 } else {
3503 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 16) {
3504 _L___4: /* CIL Label */
3505 if ((int )(*((*(hosts + x))->smtp_check + y))->passed > 6) {
3506 tmp___13 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_data_end,
3507 p);
3508 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">DATA REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3509 color, tmp___13);
3510 }
3511 }
3512 }
3513 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 18) {
3514 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	An fatal error occured while trying to read/write RSET</font><br /></td></tr>\n",
3515 color);
3516 } else {
3517 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 19) {
3518 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>	An fatal error occured while trying to read/write RSET</font><br /></td></tr>\n",
3519 color);
3520 }
3521 }
3522 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3523 tmp___14 = escape_html_chars((char *)"RSET\r\n", p);
3524 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">RESET SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3525 color, tmp___14);
3526 } else {
3527 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 19) {
3528 tmp___14 = escape_html_chars((char *)"RSET\r\n", p);
3529 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">RESET SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3530 color, tmp___14);
3531 }
3532 }
3533 if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3534 tmp___15 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_reset, p);
3535 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">RESET REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3536 color, tmp___15);
3537 } else {
3538 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 19) {
3539 tmp___15 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_reset, p);
3540 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">RESET REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3541 color, tmp___15);
3542 }
3543 }
3544 fprintf((FILE * __restrict )fd, (char const * __restrict )"</table></font><br /><br /><br />\n\n");
3545 return;
3546 }
3547 }
3548 void print_check(FILE *fd , long x , int y , char *color )
3549 { int passed___0 ;
3550 char *p ;
3551 char *buf ;
3552 char *tmp ;
3553 char *tmp___0 ;
3554 char *tmp___1 ;
3555 char *tmp___2 ;
3556 char *tmp___3 ;
3557 char *tmp___4 ;
3558 char *tmp___5 ;
3559 char *tmp___6 ;
3560 char *tmp___7 ;
3561 char *tmp___8 ;
3562 char *tmp___9 ;
3563 char *tmp___10 ;
3564 void *tmp___11 ;
3565 char *tmp___12 ;
3566 char *tmp___13 ;
3567 char *tmp___14 ;
3568 char *tmp___15 ;
3569
3570 {
3571 passed___0 = 0;
3572 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n\n<br /><br /><table border=\"0\" cellspacing=\"1\"><font color=\"%s\"><br />\n",
3573 color);
3574 if ((*(hosts + x))->resolved) {
3575 tmp = escape_html_chars((*(hosts + x))->ip_address, p);
3576 tmp___0 = escape_html_chars((*(hosts + x))->hostname, p);
3577 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td colspan=\"2\"><b>Results for %s [%s] check %d</font></b><br /><br /></td></tr>\n",
3578 tmp___0, tmp, y);
3579 } else {
3580 tmp___1 = escape_html_chars((*(hosts + x))->ip_address, p);
3581 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td colspan=\"2\"><b>Results for [%s] check %d</font></b><br /><br /></td></tr>\n",
3582 tmp___1, y);
3583 }
3584 if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3585 tmp___2 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_banner, p);
3586 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">BANNER:</font><font color=\"black\"></td>\n<td>	%s</font><br /></td></tr>\n",
3587 color, tmp___2);
3588 } else {
3589 if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3590 tmp___2 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_banner, p);
3591 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">BANNER:</font><font color=\"black\"></td>\n<td>	%s</font><br /></td></tr>\n",
3592 color, tmp___2);
3593 }
3594 }
3595 passed___0 ++;
3596 if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3597 tmp___3 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->helo, p);
3598 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">HELO SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3599 color, tmp___3);
3600 } else {
3601 if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3602 tmp___3 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->helo, p);
3603 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">HELO SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3604 color, tmp___3);
3605 }
3606 }
3607 if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3608 tmp___4 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_helo, p);
3609 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">HELO REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3610 color, tmp___4);
3611 } else {
3612 if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3613 tmp___4 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_helo, p);
3614 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">HELO REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3615 color, tmp___4);
3616 }
3617 }
3618 passed___0 ++;
3619 if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3620 tmp___5 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->mail_from, p);
3621 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">MAIL FROM SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3622 color, tmp___5);
3623 } else {
3624 if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3625 tmp___5 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->mail_from,
3626 p);
3627 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">MAIL FROM SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3628 color, tmp___5);
3629 }
3630 }
3631 if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3632 tmp___6 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_mail_from,
3633 p);
3634 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">MAIL FROM REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3635 color, tmp___6);
3636 } else {
3637 if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3638 tmp___6 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_mail_from,
3639 p);
3640 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">MAIL FROM REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3641 color, tmp___6);
3642 }
3643 }
3644 passed___0 ++;
3645 if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3646 tmp___7 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->rcpt_to, p);
3647 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">RCPT TO SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3648 color, tmp___7);
3649 } else {
3650 if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3651 tmp___7 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->rcpt_to, p);
3652 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">RCPT TO SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3653 color, tmp___7);
3654 }
3655 }
3656 if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3657 tmp___8 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_rcpt_to, p);
3658 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">RCPT TO REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3659 color, tmp___8);
3660 } else {
3661 if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3662 tmp___8 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_rcpt_to,
3663 p);
3664 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">RCPT TO REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3665 color, tmp___8);
3666 }
3667 }
3668 passed___0 ++;
3669 if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3670 tmp___9 = escape_html_chars((char *)"DATA\r\n", p);
3671 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">DATA START SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3672 color, tmp___9);
3673 } else {
3674 if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3675 tmp___9 = escape_html_chars((char *)"DATA\r\n", p);
3676 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">DATA START SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3677 color, tmp___9);
3678 }
3679 }
3680 if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3681 tmp___10 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_data_start,
3682 p);
3683 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">DATA START REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3684 color, tmp___10);
3685 } else {
3686 if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3687 tmp___10 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_data_start,
3688 p);
3689 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">DATA START REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3690 color, tmp___10);
3691 }
3692 }
3693 passed___0 ++;
3694 tmp___11 = s_malloc((unsigned long )(8193U * sizeof(char )));
3695 buf = (char *)tmp___11;
3696 return_data(x, y, buf);
3697 if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3698 tmp___12 = escape_html_chars(buf, p);
3699 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">DATA SENT:</font> 	<font color=\"black\"></td>\n<td><pre>%s</pre></font><br /></td></tr>\n",
3700 color, tmp___12);
3701 } else {
3702 if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3703 tmp___12 = escape_html_chars(buf, p);
3704 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">DATA SENT:</font> 	<font color=\"black\"></td>\n<td><pre>%s</pre></font><br /></td></tr>\n",
3705 color, tmp___12);
3706 }
3707 }
3708 free((void *)buf);
3709 if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3710 tmp___13 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_data_end,
3711 p);
3712 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">DATA REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3713 color, tmp___13);
3714 } else {
3715 if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3716 tmp___13 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_data_end,
3717 p);
3718 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">DATA REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3719 color, tmp___13);
3720 }
3721 }
3722 passed___0 ++;
3723 tmp___14 = escape_html_chars((char *)"RSET\r\n", p);
3724 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">RESET SENT:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3725 color, tmp___14);
3726 tmp___15 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_reset, p);
3727 fprintf((FILE * __restrict )fd, (char const * __restrict )"\n<tr><td>	<font color=\"%s\">RESET REPLY:</font> 	<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3728 color, tmp___15);
3729 fprintf((FILE * __restrict )fd, (char const * __restrict )"</table></font><br /><br /><br />\n\n");
3730 return;
3731 }
3732 }
3733 void print_html_header(FILE *fd , char *title )
3734 {
3735
3736 {
3737 fprintf((FILE * __restrict )fd, (char const * __restrict )"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
3738 fprintf((FILE * __restrict )fd, (char const * __restrict )"\t<html xmlns=\"http://www.w3.org/1999/xhtml\">");
3739 fprintf((FILE * __restrict )fd, (char const * __restrict )"\t<head><LINK rel=\"stylesheet\" type=\"text/css\" href=\"default.css\">");
3740 fprintf((FILE * __restrict )fd, (char const * __restrict )"\t\t<style type=\"text/css\">");
3741 fprintf((FILE * __restrict )fd, (char const * __restrict )"\t\t\ttable {\n\t\t\t}\n\t\t\tth, td {\n\t\t\t}\n\t\t\th1, h2, h3, h4, h5, h6 {\n\t\t\t\ttext-transform:capitalize;\n\t\t\t\tfont-size: medium;");
3742 fprintf((FILE * __restrict )fd, (char const * __restrict )"\t\t\t}\n\t\t\tA:link {\n\t\t\t\tcolor: darkblue;\n\t\t\t}\n\t\t\tA:visited {\n\t\t\t\tcolor: darkblue;\n\t\t\t}\n\t\t\tA:active {\n\t\t\t\tcolor: violet;");
3743 fprintf((FILE * __restrict )fd, (char const * __restrict )"\t\t\t}\n\t\t\tbody {\n\t\t\t\tcolor: black;\n\t\t\t\tbackground-color: white;\n\t\t\t\tfont-family: Verdana, Arial, Helvetica, sans-serif;\n");
3744 fprintf((FILE * __restrict )fd, (char const * __restrict )"\t\t\t\tfont-size: small;\n\t\t\t\tborder-width: 10px;\n\t\t\t\tborder-style: solid;\n\t\t\t\tborder-color: darkblue;\n\t\t\t\tpadding-top: 10px;\n");
3745 fprintf((FILE * __restrict )fd, (char const * __restrict )"\t\t\t\tpadding-left: 32px;\n\t\t\t\tpadding-right: 10px;\n\t\t\t\tpadding-bottom: 10px;\n\t\t\t\tmargin: 10px;\n\t\t\t}\n\t\t\tblockquote {\n");
3746 fprintf((FILE * __restrict )fd, (char const * __restrict )"\t\t\t\tpadding:10px;\n\t\t\t\tborder:red 5px solid;\n\t\t\t\tborder-style:inset outset inset;\n\t\t\t}\n\t\t</style>\n");
3747 fprintf((FILE * __restrict )fd, (char const * __restrict )"\t\t<title>%s</title>\n\t</head>\n\t<body>",
3748 title);
3749 fprintf((FILE * __restrict )fd, (char const * __restrict )"<Font size=\"5\">Smtp Relay Checker</font><br /><br /><br /><br />\n");
3750 fprintf((FILE * __restrict )fd, (char const * __restrict )"<table border=\"0\" cellpadding=\"5\" align=\"center\"><tr>\n");
3751 fprintf((FILE * __restrict )fd, (char const * __restrict )"<td><a href=\"%s\">Checks that Failed</a></td>\n",
3752 failed_file);
3753 fprintf((FILE * __restrict )fd, (char const * __restrict )"<td><a href=\"%s\">Checks that passed</a></td>\n",
3754 passed);
3755 fprintf((FILE * __restrict )fd, (char const * __restrict )"<td><a href=\"%s\">Checks that produced errors</a></td>\n",
3756 errord);
3757 fprintf((FILE * __restrict )fd, (char const * __restrict )"</tr></table>");
3758 fprintf((FILE * __restrict )fd, (char const * __restrict )"<br /><br />");
3759 return;
3760 }
3761 }
3762 void print_html_footer(FILE *fd , long smtp_open___0 )
3763 { char buf[8193] ;
3764
3765 {
3766 if (o.hours) {
3767 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%d Hours, %d Mins and %d Seconds",
3768 o.hours, o.mins, o.seconds);
3769 } else {
3770 if (o.mins) {
3771 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%d Mins and %d Seconds",
3772 o.mins, o.seconds);
3773 } else {
3774 snprintf((char * __restrict )(buf), 8192U, (char const * __restrict )"%d Seconds",
3775 o.seconds);
3776 }
3777 }
3778 fprintf((FILE * __restrict )fd, (char const * __restrict )"<br /><br /><center><br /><br /><hr width=\"30%%\">");
3779 fprintf((FILE * __restrict )fd, (char const * __restrict )"<font size=\"1\">Scanned %ld hosts in %s<br />%ld of which were running mail servers<br />Spencer Hardy - <a href=\"mailto:diceman@dircon.co.uk\">diceman@dircon.co.uk</a><br /><a href=\"http://www.moejo.co.uk/smtprc-website\">http://www.moejo.co.uk/smtprc-website</a></font><hr width=\"30%%\"></center></body>",
3780 o.no_hostnames, buf, smtp_open___0);
3781 return;
3782 }
3783 }
3784 void print_link(FILE *fd , char *link___0 , char *text , char *color )
3785 { char buf[30] ;
3786 int x ;
3787 size_t tmp ;
3788
3789 {
3790 x = 0;
3791 while (1) {
3792 if (x < 20) {
3793 tmp = strlen((char const *)text);
3794 if (! ((size_t )x < tmp)) {
3795 break;
3796 }
3797 } else {
3798 break;
3799 }
3800 buf[x] = *(text + x);
3801 x ++;
3802 }
3803 buf[x] = (char )'\000';
3804 fprintf((FILE * __restrict )fd, (char const * __restrict )"<a href=\"%s\"><font color=\"%s\">%s</font></a>",
3805 link___0, color, buf);
3806 return;
3807 }
3808 }
3809 char *escape_html_chars(char *string , char *s )
3810 { char *p ;
3811 char buf[8193] ;
3812 int count ;
3813 size_t tmp ;
3814 void *tmp___0 ;
3815 char *tmp___1 ;
3816 size_t tmp___2 ;
3817 void *tmp___3 ;
3818 size_t tmp___4 ;
3819 size_t tmp___5 ;
3820
3821 {
3822 count = 0;
3823 memset((void *)(buf), 0, 8192U);
3824 if ((unsigned int )string == (unsigned int )((void *)0)) {
3825 tmp = strlen("NULL");
3826 tmp___0 = s_malloc((unsigned long )((tmp + 2U) * sizeof(char )));
3827 s = (char *)tmp___0;
3828 strncpy((char * __restrict )s, (char const * __restrict )"NULL", 4U);
3829 *(s + 5) = (char )'\000';
3830 return (s);
3831 }
3832 p = string;
3833 while (1) {
3834 if ((int )*p == 60) {
3835 strncat((char * __restrict )(buf), (char const * __restrict )"<", 8192U);
3836 count += 4;
3837 goto __Cont;
3838 }
3839 if ((int )*p == 62) {
3840 strncat((char * __restrict )(buf), (char const * __restrict )">", 8192U);
3841 count += 4;
3842 goto __Cont;
3843 }
3844 buf[count] = *p;
3845 count ++;
3846 __Cont: /* CIL Label */
3847 tmp___1 = p;
3848 p ++;
3849 if (! ((int )*tmp___1 != 0)) {
3850 break;
3851 }
3852 }
3853 tmp___2 = strlen((char const *)(buf));
3854 tmp___3 = s_malloc((unsigned long )((tmp___2 + 1U) * sizeof(char )));
3855 s = (char *)tmp___3;
3856 tmp___4 = strlen((char const *)(buf));
3857 strncpy((char * __restrict )s, (char const * __restrict )(buf), tmp___4);
3858 tmp___5 = strlen((char const *)(buf));
3859 *(s + tmp___5) = (char )'\000';
3860 return (s);
3861 }
3862 }
3863 #pragma merger(0,"/tmp/cil-0nwjV0jq.i","-Wall,-g,-pthread")
3864 void display_text(void)
3865 {
3866
3867 {
3868 return;
3869 }
3870 }
3871 #pragma merger(0,"/tmp/cil-mL4HxtOc.i","-Wall,-g,-pthread")
3872 void validate_options(void)
3873 { FILE *fd ;
3874 DIR *dip ;
3875 char dir[8193] ;
3876 char buf[8193] ;
3877 int tmp ;
3878 size_t tmp___0 ;
3879 void *tmp___1 ;
3880 size_t tmp___2 ;
3881 size_t tmp___3 ;
3882 int tmp___4 ;
3883 size_t tmp___5 ;
3884 void *tmp___6 ;
3885 size_t tmp___7 ;
3886 size_t tmp___8 ;
3887 int tmp___9 ;
3888 size_t tmp___10 ;
3889 void *tmp___11 ;
3890 size_t tmp___12 ;
3891 size_t tmp___13 ;
3892 int tmp___14 ;
3893 size_t tmp___15 ;
3894 void *tmp___16 ;
3895 size_t tmp___17 ;
3896 size_t tmp___18 ;
3897 size_t tmp___19 ;
3898 time_t tmp___20 ;
3899
3900 {
3901 if (f.ip_range) {
3902 if (f.ip_list) {
3903 fatal((char *)"You cannont supply both an ip list and ip range\n");
3904 }
3905 }
3906 if (f.auto_config) {
3907 if (f.generate_config) {
3908 fatal((char *)"You can only generate the auto config file from command line options. You cannot also specify the \'-j\' option.\n");
3909 }
3910 }
3911 if (! f.ip_range) {
3912 if (! f.ip_list) {
3913 fatal((char *)"You must supply either an ip range or a file that contains a list of ip addresses to scan.\n");
3914 }
3915 }
3916 if ((int )o.number_of_threads < 5) {
3917 fatal((char *)"You can only scan with a minumum of 5 threads... please increas the number of threads.\n");
3918 }
3919 if (f.output_html) {
3920 tmp = check_file_path(o.html_file, buf);
3921 if (tmp == -1) {
3922 fatal((char *)"Unable to open output HTML file %s", o.html_file);
3923 }
3924 tmp___0 = strlen((char const *)(buf));
3925 tmp___1 = s_malloc((unsigned long )((tmp___0 + 1U) * sizeof(char )));
3926 o.html_path = (char *)tmp___1;
3927 tmp___2 = strlen((char const *)(buf));
3928 strncpy((char * __restrict )o.html_path, (char const * __restrict )(buf),
3929 tmp___2);
3930 tmp___3 = strlen((char const *)(buf));
3931 *(o.html_path + tmp___3) = (char )'\000';
3932 }
3933 if (f.output_text) {
3934 tmp___4 = check_file_path(o.text_file, buf);
3935 if (tmp___4 == -1) {
3936 fatal((char *)"Unable to open output TEXT file %s", o.text_file);
3937 }
3938 tmp___5 = strlen((char const *)(buf));
3939 tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
3940 o.text_path = (char *)tmp___6;
3941 tmp___7 = strlen((char const *)(buf));
3942 strncpy((char * __restrict )o.text_path, (char const * __restrict )(buf),
3943 tmp___7);
3944 tmp___8 = strlen((char const *)(buf));
3945 *(o.text_path + tmp___8) = (char )'\000';
3946 }
3947 if (f.output_machine) {
3948 tmp___9 = check_file_path(o.machine_file, buf);
3949 if (tmp___9 == -1) {
3950 fatal((char *)"Unable to open output MACHINE file %s", o.machine_file);
3951 }
3952 tmp___10 = strlen((char const *)(buf));
3953 tmp___11 = s_malloc((unsigned long )((tmp___10 + 1U) * sizeof(char )));
3954 o.machine_path = (char *)tmp___11;
3955 tmp___12 = strlen((char const *)(buf));
3956 strncpy((char * __restrict )o.machine_path, (char const * __restrict )(buf),
3957 tmp___12);
3958 tmp___13 = strlen((char const *)(buf));
3959 *(o.machine_path + tmp___13) = (char )'\000';
3960 }
3961 if (f.output_xml) {
3962 tmp___14 = check_file_path(o.xml_file, buf);
3963 if (tmp___14 == -1) {
3964 fatal((char *)"Unable to open output XML file %s", o.xml_file);
3965 }
3966 tmp___15 = strlen((char const *)(buf));
3967 tmp___16 = s_malloc((unsigned long )((tmp___15 + 1U) * sizeof(char )));
3968 o.xml_path = (char *)tmp___16;
3969 tmp___17 = strlen((char const *)(buf));
3970 strncpy((char * __restrict )o.xml_path, (char const * __restrict )(buf), tmp___17);
3971 tmp___18 = strlen((char const *)(buf));
3972 *(o.xml_path + tmp___18) = (char )'\000';
3973 }
3974 if (f.maildir) {
3975 tmp___19 = strlen((char const *)o.mailbox);
3976 if ((int )*(o.mailbox + tmp___19) == 47) {
3977 snprintf((char * __restrict )(dir), 8192U, (char const * __restrict )"%snew",
3978 o.mailbox);
3979 } else {
3980 snprintf((char * __restrict )(dir), 8192U, (char const * __restrict )"%s/new",
3981 o.mailbox);
3982 }
3983 dir[8192] = (char )'\000';
3984 dip = opendir((char const *)(dir));
3985 if ((unsigned int )dip == (unsigned int )((void *)0)) {
3986 fatal((char *)"Unable to open maildir folder (%s)", dir);
3987 }
3988 }
3989 if (f.mbox) {
3990 fd = fopen((char const * __restrict )o.mailbox, (char const * __restrict )"r");
3991 if ((unsigned int )fd == (unsigned int )((void *)0)) {
3992 fatal((char *)"Unable to mbox (%s)\n", o.mailbox);
3993 }
3994 }
3995 if (((int )f.mbox + (int )f.maildir) + (int )f.pop > 1) {
3996 fatal((char *)"You can only supply one mail retreival format");
3997 }
3998 if (! f.config_file) {
3999 printf((char const * __restrict )"\nConfig file not specified, using the default location (%s)\n",
4000 o.config_file);
4001 f.config_file = (unsigned char)1;
4002 }
4003 if (! f.email_template) {
4004 printf((char const * __restrict )"\nEmail template not specified, using the default location (%s)\n",
4005 o.email_template);
4006 f.email_template = (unsigned char)1;
4007 }
4008 tmp___20 = time((time_t *)((void *)0));
4009 o.time = (unsigned int )tmp___20;
4010 return;
4011 }
4012 }
4013 #pragma merger(0,"/tmp/cil-SMk1onHu.i","-Wall,-g,-pthread")
4014 int check_banner(int *sockfd , long cur_host , int rule___0 ) ;
4015 int check_helo(int *sockfd , long cur_host , int rule___0 ) ;
4016 int check_mail_from(int *sockfd , long cur_host , int rule___0 ) ;
4017 int check_rcpt_to(int *sockfd , long cur_host , int rule___0 ) ;
4018 int check_send_data_start(int *sockfd , long cur_host , int rule___0 ) ;
4019 int check_send_data(int *sockfd , long cur_host , int rule___0 ) ;
4020 int suspected_open_relay(long cur_host , int rule___0 ) ;
4021 int reset_smtp(int *sockfd , long cur_host , int rule___0 ) ;
4022 int quit_smtp(int *sockfd , long cur_host , int rule___0 ) ;
4023 int relay_check(int *sockfd , long cur_host )
4024 { int rule___0 ;
4025 int res ;
4026 int padding ;
4027 char checking[8193] ;
4028
4029 {
4030 rule___0 = 0;
4031 res = 0;
4032 padding = 60;
4033 if (f.resolve_hostnames) {
4034 if ((*(hosts + cur_host))->resolved) {
4035 if (! f.display_only_ips) {
4036 snprintf((char * __restrict )(checking), (unsigned int )padding, (char const * __restrict )"Checking %s%200c",
4037 (*(hosts + cur_host))->hostname, ' ');
4038 } else {
4039 snprintf((char * __restrict )(checking), (unsigned int )padding, (char const * __restrict )"Checking %s%200c",
4040 (*(hosts + cur_host))->ip_address, ' ');
4041 }
4042 } else {
4043 snprintf((char * __restrict )(checking), (unsigned int )padding, (char const * __restrict )"Checking %s%200c",
4044 (*(hosts + cur_host))->ip_address, ' ');
4045 }
4046 } else {
4047 snprintf((char * __restrict )(checking), (unsigned int )padding, (char const * __restrict )"Checking %s%200c",
4048 (*(hosts + cur_host))->ip_address, ' ');
4049 }
4050 rule___0 = 0;
4051 while (rule___0 <= (int )o.no_rules) {
4052 if (! rule___0) {
4053 res = check_banner(sockfd, cur_host, rule___0);
4054 if (res == -1) {
4055 strncat((char * __restrict )(checking), (char const * __restrict )" !",
4056 8192U);
4057 if (f.verbose) {
4058 printf((char const * __restrict )"%s\n", checking);
4059 }
4060 return (-1);
4061 } else {
4062 if (res == 1) {
4063 strncat((char * __restrict )(checking), (char const * __restrict )" o",
4064 8192U);
4065 goto RESET;
4066 }
4067 }
4068 res = check_helo(sockfd, cur_host, rule___0);
4069 if (res == -1) {
4070 strncat((char * __restrict )(checking), (char const * __restrict )" !",
4071 8192U);
4072 if (f.verbose) {
4073 printf((char const * __restrict )"%s\n", checking);
4074 }
4075 return (-1);
4076 } else {
4077 if (res == 1) {
4078 strncat((char * __restrict )(checking), (char const * __restrict )" o",
4079 8192U);
4080 goto RESET;
4081 }
4082 }
4083 }
4084 res = check_mail_from(sockfd, cur_host, rule___0);
4085 if (res == -1) {
4086 strncat((char * __restrict )(checking), (char const * __restrict )" !",
4087 8192U);
4088 if (f.verbose) {
4089 printf((char const * __restrict )"%s\n", checking);
4090 }
4091 return (-1);
4092 } else {
4093 if (res == 1) {
4094 strncat((char * __restrict )(checking), (char const * __restrict )" o",
4095 8192U);
4096 goto RESET;
4097 }
4098 }
4099 res = check_rcpt_to(sockfd, cur_host, rule___0);
4100 if (res == -1) {
4101 strncat((char * __restrict )(checking), (char const * __restrict )" !",
4102 8192U);
4103 if (f.verbose) {
4104 printf((char const * __restrict )"%s\n", checking);
4105 }
4106 return (-1);
4107 } else {
4108 if (res == 1) {
4109 strncat((char * __restrict )(checking), (char const * __restrict )" o",
4110 8192U);
4111 goto RESET;
4112 }
4113 }
4114 res = check_send_data_start(sockfd, cur_host, rule___0);
4115 if (res == -1) {
4116 strncat((char * __restrict )(checking), (char const * __restrict )" !",
4117 8192U);
4118 if (f.verbose) {
4119 printf((char const * __restrict )"%s\n", checking);
4120 }
4121 return (-1);
4122 } else {
4123 if (res == 1) {
4124 strncat((char * __restrict )(checking), (char const * __restrict )" o",
4125 8192U);
4126 goto RESET;
4127 }
4128 }
4129 res = check_send_data(sockfd, cur_host, rule___0);
4130 if (res == -1) {
4131 strncat((char * __restrict )(checking), (char const * __restrict )" !",
4132 8192U);
4133 if (f.verbose) {
4134 printf((char const * __restrict )"%s\n", checking);
4135 }
4136 return (-1);
4137 } else {
4138 if (res == 1) {
4139 strncat((char * __restrict )(checking), (char const * __restrict )" o",
4140 8192U);
4141 goto RESET;
4142 }
4143 }
4144 strncat((char * __restrict )(checking), (char const * __restrict )" x", 8192U);
4145 (*((*(hosts + cur_host))->smtp_check + rule___0))->failed = (unsigned char)1;
4146 suspected_open_relay(cur_host, rule___0);
4147 RESET:
4148 res = reset_smtp(sockfd, cur_host, rule___0);
4149 if (res == -1) {
4150 strncat((char * __restrict )(checking), (char const * __restrict )" !",
4151 8192U);
4152 printf((char const * __restrict )"%s\n", checking);
4153 return (-1);
4154 }
4155 rule___0 ++;
4156 }
4157 res = quit_smtp(sockfd, cur_host, (int )o.no_rules);
4158 if (res == -1) {
4159 strncat((char * __restrict )(checking), (char const * __restrict )" !", (unsigned int )padding);
4160 printf((char const * __restrict )"%s\n", checking);
4161 return (-1);
4162 }
4163 printf((char const * __restrict )"%s\n", checking);
4164 return (0);
4165 }
4166 }
4167 #pragma merger(0,"/tmp/cil-AnIOkWli.i","-Wall,-g,-pthread")
4168 void fatal(char *fmt , ...)
4169 { va_list ap ;
4170
4171 {
4172 __builtin_va_start(ap, fmt);
4173 fflush(stdout);
4174 fprintf((FILE * __restrict )stderr, (char const * __restrict )"ERROR: ");
4175 vfprintf((FILE * __restrict )stderr, (char const * __restrict )fmt, ap);
4176 fprintf((FILE * __restrict )stderr, (char const * __restrict )"\nQUITTING!\n");
4177 __builtin_va_end(ap);
4178 exit(1);
4179 return;
4180 }
4181 }
4182 void error(char *fmt , ...)
4183 { va_list ap ;
4184
4185 {
4186 __builtin_va_start(ap, fmt);
4187 fflush(stdout);
4188 vfprintf((FILE * __restrict )stderr, (char const * __restrict )fmt, ap);
4189 fprintf((FILE * __restrict )stderr, (char const * __restrict )"\n");
4190 __builtin_va_end(ap);
4191 return;
4192 }
4193 }
4194 #pragma merger(0,"/tmp/cil-d6rPGVlq.i","-Wall,-g,-pthread")
4195 void display_machine(void)
4196 {
4197
4198 {
4199 return;
4200 }
4201 }
4202 #pragma merger(0,"/tmp/cil-EuTtXGmx.i","-Wall,-g,-pthread")
4203 void display_xml(void)
4204 {
4205
4206 {
4207 return;
4208 }
4209 }
4210 /* compiler builtin:
4211 void *__builtin_alloca(unsigned int ) ; */
4212 #pragma merger(0,"/tmp/cil-SKHJ9eww.i","-Wall,-g,-pthread")
4213 extern char *optarg ;
4214 extern __attribute__((__nothrow__)) int getopt(int ___argc , char * const *___argv ,
4215 char const *__shortopts ) ;
4216 void usage(char *pname ) ;
4217 struct options o ;
4218 struct flags f ;
4219 void parse_args(int argc , char * const *argv )
4220 { char c ;
4221 size_t tmp ;
4222 void *tmp___0 ;
4223 size_t tmp___1 ;
4224 size_t tmp___2 ;
4225 size_t tmp___3 ;
4226 void *tmp___4 ;
4227 size_t tmp___5 ;
4228 size_t tmp___6 ;
4229 size_t tmp___7 ;
4230 void *tmp___8 ;
4231 size_t tmp___9 ;
4232 size_t tmp___10 ;
4233 size_t tmp___11 ;
4234 void *tmp___12 ;
4235 size_t tmp___13 ;
4236 size_t tmp___14 ;
4237 size_t tmp___15 ;
4238 void *tmp___16 ;
4239 size_t tmp___17 ;
4240 size_t tmp___18 ;
4241 size_t tmp___19 ;
4242 void *tmp___20 ;
4243 size_t tmp___21 ;
4244 size_t tmp___22 ;
4245 size_t tmp___23 ;
4246 void *tmp___24 ;
4247 size_t tmp___25 ;
4248 size_t tmp___26 ;
4249 int tmp___27 ;
4250 int tmp___28 ;
4251 size_t tmp___29 ;
4252 void *tmp___30 ;
4253 size_t tmp___31 ;
4254 size_t tmp___32 ;
4255 int tmp___33 ;
4256 int tmp___34 ;
4257 size_t tmp___35 ;
4258 void *tmp___36 ;
4259 size_t tmp___37 ;
4260 size_t tmp___38 ;
4261 size_t tmp___39 ;
4262 void *tmp___40 ;
4263 size_t tmp___41 ;
4264 size_t tmp___42 ;
4265 size_t tmp___43 ;
4266 void *tmp___44 ;
4267 size_t tmp___45 ;
4268 size_t tmp___46 ;
4269 size_t tmp___47 ;
4270 void *tmp___48 ;
4271 size_t tmp___49 ;
4272 size_t tmp___50 ;
4273 size_t tmp___51 ;
4274 void *tmp___52 ;
4275 size_t tmp___53 ;
4276 size_t tmp___54 ;
4277 size_t tmp___55 ;
4278 void *tmp___56 ;
4279 size_t tmp___57 ;
4280 size_t tmp___58 ;
4281 int tmp___59 ;
4282
4283 {
4284 while (1) {
4285 tmp___59 = getopt(argc, argv, "ab:c:de:f:g:hi:j:k:l:m:no:p:qr:s:tu:vw:x:y:");
4286 c = (char )tmp___59;
4287 if (! ((int )c != -1)) {
4288 break;
4289 }
4290 switch ((int )c) {
4291 case 97:
4292 f.display_all = (unsigned char)1;
4293 break;
4294 case 98:
4295 f.send_email = (unsigned char)1;
4296 tmp = strlen((char const *)optarg);
4297 tmp___0 = s_malloc((unsigned long )((tmp + 1U) * sizeof(char )));
4298 o.email_address = (char *)tmp___0;
4299 tmp___1 = strlen((char const *)optarg);
4300 strncpy((char * __restrict )o.email_address, (char const * __restrict )optarg,
4301 tmp___1);
4302 tmp___2 = strlen((char const *)optarg);
4303 *(o.email_address + tmp___2) = (char )'\000';
4304 break;
4305 case 99:
4306 f.config_file = (unsigned char)1;
4307 tmp___3 = strlen((char const *)(optarg + 1));
4308 tmp___4 = realloc((void *)o.config_file, tmp___3 * sizeof(char ));
4309 o.config_file = (char *)tmp___4;
4310 if ((unsigned int )o.config_file == (unsigned int )((void *)0)) {
4311 fatal((char *)"Realloc Error\n");
4312 }
4313 tmp___5 = strlen((char const *)optarg);
4314 strncpy((char * __restrict )o.config_file, (char const * __restrict )optarg,
4315 tmp___5);
4316 tmp___6 = strlen((char const *)optarg);
4317 *(o.config_file + tmp___6) = (char )'\000';
4318 break;
4319 case 100:
4320 f.debug = (unsigned char)1;
4321 break;
4322 case 101:
4323 f.check_mailbox = (unsigned char)1;
4324 f.mbox = (unsigned char)1;
4325 tmp___7 = strlen((char const *)optarg);
4326 tmp___8 = s_malloc((unsigned long )((tmp___7 + 1U) * sizeof(char )));
4327 o.mailbox = (char *)tmp___8;
4328 tmp___9 = strlen((char const *)optarg);
4329 strncpy((char * __restrict )o.mailbox, (char const * __restrict )optarg, tmp___9);
4330 tmp___10 = strlen((char const *)optarg);
4331 *(o.mailbox + tmp___10) = (char )'\000';
4332 break;
4333 case 102:
4334 not_implemented();
4335 f.output_text = (unsigned char)1;
4336 tmp___11 = strlen((char const *)optarg);
4337 tmp___12 = s_malloc((unsigned long )((tmp___11 + 1U) * sizeof(char )));
4338 o.text_file = (char *)tmp___12;
4339 tmp___13 = strlen((char const *)optarg);
4340 strncpy((char * __restrict )o.text_file, (char const * __restrict )optarg,
4341 tmp___13);
4342 tmp___14 = strlen((char const *)optarg);
4343 *(o.text_file + tmp___14) = (char )'\000';
4344 break;
4345 case 104:
4346 usage((char *)*(argv + 0));
4347 break;
4348 case 105:
4349 f.ip_list = (unsigned char)1;
4350 tmp___15 = strlen((char const *)optarg);
4351 tmp___16 = s_malloc((unsigned long )((tmp___15 + 1U) * sizeof(char )));
4352 o.ip_list = (char *)tmp___16;
4353 tmp___17 = strlen((char const *)optarg);
4354 strncpy((char * __restrict )o.ip_list, (char const * __restrict )optarg, tmp___17);
4355 tmp___18 = strlen((char const *)optarg);
4356 *(o.ip_list + tmp___18) = (char )'\000';
4357 break;
4358 case 106:
4359 f.auto_config = (unsigned char)1;
4360 tmp___19 = strlen((char const *)optarg);
4361 tmp___20 = s_malloc((unsigned long )((tmp___19 + 1U) * sizeof(char )));
4362 o.auto_config_file = (char *)tmp___20;
4363 tmp___21 = strlen((char const *)optarg);
4364 strncpy((char * __restrict )o.auto_config_file, (char const * __restrict )optarg,
4365 tmp___21);
4366 tmp___22 = strlen((char const *)optarg);
4367 *(o.auto_config_file + tmp___22) = (char )'\000';
4368 break;
4369 case 107:
4370 f.generate_config = (unsigned char)1;
4371 tmp___23 = strlen((char const *)optarg);
4372 tmp___24 = s_malloc((unsigned long )((tmp___23 + 1U) * sizeof(char )));
4373 o.generate_file = (char *)tmp___24;
4374 tmp___25 = strlen((char const *)optarg);
4375 strncpy((char * __restrict )o.generate_file, (char const * __restrict )optarg,
4376 tmp___25);
4377 tmp___26 = strlen((char const *)optarg);
4378 *(o.generate_file + tmp___26) = (char )'\000';
4379 break;
4380 case 108:
4381 tmp___27 = atoi((char const *)optarg);
4382 o.c_timeout = (unsigned short )tmp___27;
4383 break;
4384 case 109:
4385 tmp___28 = atoi((char const *)optarg);
4386 o.m_timeout = (unsigned short )tmp___28;
4387 break;
4388 case 110:
4389 f.resolve_hostnames = (unsigned char)1;
4390 break;
4391 case 111:
4392 f.output_machine = (unsigned char)1;
4393 tmp___29 = strlen((char const *)optarg);
4394 tmp___30 = s_malloc((unsigned long )((tmp___29 + 1U) * sizeof(char )));
4395 o.machine_file = (char *)tmp___30;
4396 tmp___31 = strlen((char const *)optarg);
4397 strncpy((char * __restrict )o.machine_file, (char const * __restrict )optarg,
4398 tmp___31);
4399 tmp___32 = strlen((char const *)optarg);
4400 *(o.machine_file + tmp___32) = (char )'\000';
4401 break;
4402 case 112:
4403 tmp___33 = atoi((char const *)optarg);
4404 o.number_of_threads = (unsigned short )tmp___33;
4405 break;
4406 case 113:
4407 f.display_only_ips = (unsigned char)1;
4408 break;
4409 case 114:
4410 tmp___34 = atoi((char const *)optarg);
4411 o.r_timeout = (unsigned short )tmp___34;
4412 break;
4413 case 115:
4414 f.ip_range = (unsigned char)1;
4415 tmp___35 = strlen((char const *)optarg);
4416 tmp___36 = s_malloc((unsigned long )((tmp___35 + 1U) * sizeof(char )));
4417 o.ip_range = (char *)tmp___36;
4418 tmp___37 = strlen((char const *)optarg);
4419 strncpy((char * __restrict )o.ip_range, (char const * __restrict )optarg,
4420 tmp___37);
4421 tmp___38 = strlen((char const *)optarg);
4422 *(o.ip_range + tmp___38) = (char )'\000';
4423 break;
4424 case 117:
4425 f.check_mailbox = (unsigned char)1;
4426 f.maildir = (unsigned char)1;
4427 tmp___39 = strlen((char const *)optarg);
4428 tmp___40 = s_malloc((unsigned long )((tmp___39 + 1U) * sizeof(char )));
4429 o.mailbox = (char *)tmp___40;
4430 tmp___41 = strlen((char const *)optarg);
4431 strncpy((char * __restrict )o.mailbox, (char const * __restrict )optarg, tmp___41);
4432 tmp___42 = strlen((char const *)optarg);
4433 *(o.mailbox + tmp___42) = (char )'\000';
4434 break;
4435 case 118:
4436 f.verbose = (unsigned char )((int )f.verbose + 1);
4437 break;
4438 case 119:
4439 f.output_html = (unsigned char)1;
4440 tmp___43 = strlen((char const *)optarg);
4441 tmp___44 = s_malloc((unsigned long )((tmp___43 + 1U) * sizeof(char )));
4442 o.html_file = (char *)tmp___44;
4443 tmp___45 = strlen((char const *)optarg);
4444 strncpy((char * __restrict )o.html_file, (char const * __restrict )optarg,
4445 tmp___45);
4446 tmp___46 = strlen((char const *)optarg);
4447 *(o.html_file + tmp___46) = (char )'\000';
4448 break;
4449 case 120:
4450 not_implemented();
4451 f.output_xml = (unsigned char)1;
4452 tmp___47 = strlen((char const *)optarg);
4453 tmp___48 = s_malloc((unsigned long )((tmp___47 + 1U) * sizeof(char )));
4454 o.xml_file = (char *)tmp___48;
4455 tmp___49 = strlen((char const *)optarg);
4456 strncpy((char * __restrict )o.xml_file, (char const * __restrict )optarg,
4457 tmp___49);
4458 tmp___50 = strlen((char const *)optarg);
4459 *(o.xml_file + tmp___50) = (char )'\000';
4460 case 121:
4461 f.email_template = (unsigned char)1;
4462 tmp___51 = strlen((char const *)(optarg + 1));
4463 tmp___52 = realloc((void *)o.email_template, tmp___51 * sizeof(char ));
4464 o.email_template = (char *)tmp___52;
4465 if ((unsigned int )o.email_template == (unsigned int )((void *)0)) {
4466 fatal((char *)"Realloc Error\n");
4467 }
4468 tmp___53 = strlen((char const *)optarg);
4469 strncpy((char * __restrict )o.email_template, (char const * __restrict )optarg,
4470 tmp___53);
4471 tmp___54 = strlen((char const *)optarg);
4472 *(o.email_template + tmp___54) = (char )'\000';
4473 break;
4474 case 122:
4475 not_implemented();
4476 f.output_machine = (unsigned char)1;
4477 tmp___55 = strlen((char const *)optarg);
4478 tmp___56 = s_malloc((unsigned long )((tmp___55 + 1U) * sizeof(char )));
4479 o.machine_file = (char *)tmp___56;
4480 tmp___57 = strlen((char const *)optarg);
4481 strncpy((char * __restrict )o.machine_file, (char const * __restrict )optarg,
4482 tmp___57);
4483 tmp___58 = strlen((char const *)optarg);
4484 *(o.machine_file + tmp___58) = (char )'\000';
4485 case 63:
4486 usage((char *)*(argv + 0));
4487 default:
4488 usage((char *)*(argv + 0));
4489 }
4490 }
4491 return;
4492 }
4493 }
4494 int get_domain(void)
4495 { char *p ;
4496 char *t ;
4497 size_t tmp ;
4498 char *email ;
4499 unsigned int __lengthofemail ;
4500 void *tmp___0 ;
4501 int flag ;
4502 unsigned short const **tmp___1 ;
4503 unsigned short const **tmp___2 ;
4504 unsigned short const **tmp___3 ;
4505 char *tmp___4 ;
4506 size_t tmp___5 ;
4507 void *tmp___6 ;
4508 size_t tmp___7 ;
4509 size_t tmp___8 ;
4510 size_t tmp___9 ;
4511 void *tmp___10 ;
4512 size_t tmp___11 ;
4513 size_t tmp___12 ;
4514
4515 {
4516 tmp = strlen((char const *)o.email_address);
4517 __lengthofemail = tmp + 1U;
4518 tmp___0 = __builtin_alloca(sizeof(*email) * __lengthofemail);
4519 email = (char *)tmp___0;
4520 flag = 0;
4521 strncpy((char * __restrict )email, (char const * __restrict )o.email_address,
4522 sizeof(*email) * __lengthofemail);
4523 p = o.email_address;
4524 while (1) {
4525 tmp___4 = p;
4526 p ++;
4527 if (! *tmp___4) {
4528 break;
4529 }
4530 if ((int )*p == 0) {
4531 goto _L;
4532 } else {
4533 tmp___3 = __ctype_b_loc();
4534 if ((int const )*(*tmp___3 + (int )*p) & 8) {
4535 goto _L;
4536 } else {
4537 if ((int )*p == 46) {
4538 goto _L;
4539 } else {
4540 if ((int )*p == 45) {
4541 goto _L;
4542 } else {
4543 if ((int )*p == 95) {
4544 goto _L;
4545 } else {
4546 if ((int )*p == 64) {
4547 _L: /* CIL Label */
4548 if ((int )*p == 64) {
4549 flag ++;
4550 t = p;
4551 tmp___1 = __ctype_b_loc();
4552 t ++;
4553 if (! ((int const )*(*tmp___1 + (int )*t) & 8)) {
4554 fatal((char *)"The email address you have supplied %s is incorrect!!\n",
4555 email);
4556 }
4557 t = p;
4558 tmp___2 = __ctype_b_loc();
4559 t --;
4560 if (! ((int const )*(*tmp___2 + (int )*t) & 8)) {
4561 fatal((char *)"The email address you have supplied %s is incorrect!!\n",
4562 email);
4563 }
4564 t = p;
4565 *t = (char )'\000';
4566 t ++;
4567 p ++;
4568 }
4569 } else {
4570 fatal((char *)"The email address you have supplied %s is incorrect!!\n",
4571 email);
4572 }
4573 }
4574 }
4575 }
4576 }
4577 }
4578 }
4579 if (! flag) {
4580 fatal((char *)"The email address you have supplied %s is incorrect!!\n", email);
4581 } else {
4582 if (flag > 2) {
4583 fatal((char *)"The email address you have supplied %s is incorrect!!\n", email);
4584 }
4585 }
4586 tmp___5 = strlen((char const *)t);
4587 tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
4588 o.domain = (char *)tmp___6;
4589 tmp___7 = strlen((char const *)t);
4590 strncpy((char * __restrict )o.domain, (char const * __restrict )t, tmp___7);
4591 tmp___8 = strlen((char const *)t);
4592 *(o.domain + tmp___8) = (char )'\000';
4593 tmp___9 = strlen((char const *)o.email_address);
4594 tmp___10 = s_malloc((unsigned long )((tmp___9 + 1U) * sizeof(char )));
4595 o.name = (char *)tmp___10;
4596 tmp___11 = strlen((char const *)o.email_address);
4597 strncpy((char * __restrict )o.name, (char const * __restrict )o.email_address,
4598 tmp___11);
4599 tmp___12 = strlen((char const *)o.email_address);
4600 *(o.name + tmp___12) = (char )'\000';
4601 debug((char *)"name: %s domain: %s\n", o.name, o.domain);
4602 return (0);
4603 }
4604 }
4605 #pragma merger(0,"/tmp/cil-pi4v49pL.i","-Wall,-g,-pthread")
4606 extern ssize_t send(int __fd , void const *__buf , size_t __n , int __flags ) ;
4607 int write_smtp(int *sockfd , char *string , long cur_host )
4608 { int size ;
4609 size_t tmp ;
4610 int ret ;
4611 int *tmp___0 ;
4612
4613 {
4614 tmp = strlen((char const *)string);
4615 size = (int )tmp;
4616 ret = 0;
4617 ret = send(*sockfd, (void const *)string, (unsigned int )size, 16384);
4618 if (ret == -1) {
4619 tmp___0 = __errno_location();
4620 if (*tmp___0 == 16384) {
4621 (*(hosts + cur_host))->fatal_error = (unsigned char)1;
4622 } else {
4623 if (ret != size) {
4624 (*(hosts + cur_host))->fatal_error = (unsigned char)1;
4625 } else {
4626 (*(hosts + cur_host))->fatal_error = (unsigned char)2;
4627 }
4628 }
4629 return (-1);
4630 }
4631 return (0);
4632 }
4633 }
4634 int read_smtp(int *sockfd , char *dest , long cur_host )
4635 { int ret ;
4636
4637 {
4638 ret = read_timeo(*sockfd, dest, 8192, (int )o.r_timeout);
4639 if (ret == -1) {
4640 (*(hosts + cur_host))->fatal_error = (unsigned char)3;
4641 return (-1);
4642 }
4643 if (! ret) {
4644 (*(hosts + cur_host))->fatal_error = (unsigned char)4;
4645 return (-1);
4646 }
4647 return (0);
4648 }
4649 }
4650 int check_banner(int *sockfd , long cur_host , int rule___0 )
4651 { char *buf ;
4652 int res ;
4653 void *tmp ;
4654 size_t tmp___0 ;
4655 void *tmp___1 ;
4656 size_t tmp___2 ;
4657 size_t tmp___3 ;
4658 size_t tmp___4 ;
4659 void *tmp___5 ;
4660 size_t tmp___6 ;
4661 size_t tmp___7 ;
4662 size_t tmp___8 ;
4663 void *tmp___9 ;
4664 size_t tmp___10 ;
4665 size_t tmp___11 ;
4666 size_t tmp___12 ;
4667 void *tmp___13 ;
4668 size_t tmp___14 ;
4669 size_t tmp___15 ;
4670 int tmp___16 ;
4671 int tmp___17 ;
4672 int tmp___18 ;
4673
4674 {
4675 res = 0;
4676 tmp = s_zmalloc((int )(8193U * sizeof(char )));
4677 buf = (char *)tmp;
4678 res = read_smtp(sockfd, buf, cur_host);
4679 if (res == -1) {
4680 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4681 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)1;
4682 free((void *)buf);
4683 return (-1);
4684 }
4685 tmp___18 = strncmp((char const *)buf, "220", 3U);
4686 if (tmp___18) {
4687 tmp___17 = strncmp((char const *)buf, "421", 3U);
4688 if (tmp___17) {
4689 tmp___16 = strncmp((char const *)buf, "521", 3U);
4690 if (tmp___16) {
4691 (*(hosts + cur_host))->fatal_error = (unsigned char)6;
4692 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4693 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)2;
4694 tmp___12 = strlen((char const *)buf);
4695 tmp___13 = s_malloc((unsigned long )((tmp___12 + 1U) * sizeof(char )));
4696 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner = (char *)tmp___13;
4697 tmp___14 = strlen((char const *)buf);
4698 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner,
4699 (char const * __restrict )buf, tmp___14);
4700 tmp___15 = strlen((char const *)buf);
4701 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner + tmp___15) = (char )'\000';
4702 free((void *)buf);
4703 return (-1);
4704 } else {
4705 (*(hosts + cur_host))->fatal_error = (unsigned char)5;
4706 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4707 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)2;
4708 tmp___8 = strlen((char const *)buf);
4709 tmp___9 = s_malloc((unsigned long )((tmp___8 + 1U) * sizeof(char )));
4710 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner = (char *)tmp___9;
4711 tmp___10 = strlen((char const *)buf);
4712 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner,
4713 (char const * __restrict )buf, tmp___10);
4714 tmp___11 = strlen((char const *)buf);
4715 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner + tmp___11) = (char )'\000';
4716 free((void *)buf);
4717 return (-1);
4718 }
4719 } else {
4720 (*(hosts + cur_host))->fatal_error = (unsigned char)5;
4721 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4722 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)2;
4723 tmp___4 = strlen((char const *)buf);
4724 tmp___5 = s_malloc((unsigned long )((tmp___4 + 1U) * sizeof(char )));
4725 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner = (char *)tmp___5;
4726 tmp___6 = strlen((char const *)buf);
4727 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner,
4728 (char const * __restrict )buf, tmp___6);
4729 tmp___7 = strlen((char const *)buf);
4730 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner + tmp___7) = (char )'\000';
4731 free((void *)buf);
4732 return (-1);
4733 }
4734 } else {
4735 tmp___0 = strlen((char const *)buf);
4736 tmp___1 = s_malloc((unsigned long )((tmp___0 + 1U) * sizeof(char )));
4737 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner = (char *)tmp___1;
4738 tmp___2 = strlen((char const *)buf);
4739 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner,
4740 (char const * __restrict )buf, tmp___2);
4741 tmp___3 = strlen((char const *)buf);
4742 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner + tmp___3) = (char )'\000';
4743 free((void *)buf);
4744 return (0);
4745 }
4746 free((void *)buf);
4747 return (-1);
4748 }
4749 }
4750 int check_helo(int *sockfd , long cur_host , int rule___0 )
4751 { char *buf ;
4752 int res ;
4753 void *tmp ;
4754 size_t tmp___0 ;
4755 void *tmp___1 ;
4756 size_t tmp___2 ;
4757 size_t tmp___3 ;
4758 int tmp___4 ;
4759 size_t tmp___5 ;
4760 void *tmp___6 ;
4761 size_t tmp___7 ;
4762 size_t tmp___8 ;
4763 size_t tmp___9 ;
4764 void *tmp___10 ;
4765 size_t tmp___11 ;
4766 size_t tmp___12 ;
4767 size_t tmp___13 ;
4768 void *tmp___14 ;
4769 size_t tmp___15 ;
4770 size_t tmp___16 ;
4771 int tmp___17 ;
4772 int tmp___18 ;
4773
4774 {
4775 res = 0;
4776 tmp = s_zmalloc((int )(8193U * sizeof(char )));
4777 buf = (char *)tmp;
4778 swap_rule(buf, (char const *)(*(rules + rule___0))->helo, (int )cur_host);
4779 convert_rule(buf, 1);
4780 tmp___0 = strlen((char const *)buf);
4781 tmp___1 = s_malloc((unsigned long )((tmp___0 + 1U) * sizeof(char )));
4782 (*((*(hosts + cur_host))->smtp_check + rule___0))->helo = (char *)tmp___1;
4783 tmp___2 = strlen((char const *)buf);
4784 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->helo,
4785 (char const * __restrict )buf, tmp___2);
4786 tmp___3 = strlen((char const *)buf);
4787 *((*((*(hosts + cur_host))->smtp_check + rule___0))->helo + tmp___3) = (char )'\000';
4788 tmp___4 = write_smtp(sockfd, buf, cur_host);
4789 if (tmp___4 == -1) {
4790 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4791 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)3;
4792 free((void *)buf);
4793 return (-1);
4794 }
4795 memset((void *)buf, 0, 8192U);
4796 res = read_smtp(sockfd, buf, cur_host);
4797 if (res == -1) {
4798 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4799 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)4;
4800 free((void *)buf);
4801 return (-1);
4802 }
4803 tmp___18 = strncmp((char const *)buf, "250", 3U);
4804 if (tmp___18) {
4805 tmp___17 = strncmp((char const *)buf, "421", 3U);
4806 if (tmp___17) {
4807 (*(hosts + cur_host))->fatal_error = (unsigned char)6;
4808 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4809 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)5;
4810 tmp___13 = strlen((char const *)buf);
4811 tmp___14 = s_malloc((unsigned long )((tmp___13 + 1U) * sizeof(char )));
4812 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo = (char *)tmp___14;
4813 tmp___15 = strlen((char const *)buf);
4814 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo,
4815 (char const * __restrict )buf, tmp___15);
4816 tmp___16 = strlen((char const *)buf);
4817 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo + tmp___16) = (char )'\000';
4818 free((void *)buf);
4819 return (-1);
4820 } else {
4821 (*(hosts + cur_host))->fatal_error = (unsigned char)5;
4822 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4823 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)5;
4824 tmp___9 = strlen((char const *)buf);
4825 tmp___10 = s_malloc((unsigned long )((tmp___9 + 1U) * sizeof(char )));
4826 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo = (char *)tmp___10;
4827 tmp___11 = strlen((char const *)buf);
4828 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo,
4829 (char const * __restrict )buf, tmp___11);
4830 tmp___12 = strlen((char const *)buf);
4831 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo + tmp___12) = (char )'\000';
4832 free((void *)buf);
4833 return (-1);
4834 }
4835 } else {
4836 tmp___5 = strlen((char const *)buf);
4837 tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
4838 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo = (char *)tmp___6;
4839 tmp___7 = strlen((char const *)buf);
4840 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo,
4841 (char const * __restrict )buf, tmp___7);
4842 tmp___8 = strlen((char const *)buf);
4843 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo + tmp___8) = (char )'\000';
4844 free((void *)buf);
4845 return (0);
4846 }
4847 free((void *)buf);
4848 return (-1);
4849 }
4850 }
4851 int check_mail_from(int *sockfd , long cur_host , int rule___0 )
4852 { char *buf ;
4853 int res ;
4854 void *tmp ;
4855 size_t tmp___0 ;
4856 void *tmp___1 ;
4857 size_t tmp___2 ;
4858 size_t tmp___3 ;
4859 int tmp___4 ;
4860 size_t tmp___5 ;
4861 void *tmp___6 ;
4862 size_t tmp___7 ;
4863 size_t tmp___8 ;
4864 size_t tmp___9 ;
4865 void *tmp___10 ;
4866 size_t tmp___11 ;
4867 size_t tmp___12 ;
4868 size_t tmp___13 ;
4869 void *tmp___14 ;
4870 size_t tmp___15 ;
4871 size_t tmp___16 ;
4872 size_t tmp___17 ;
4873 void *tmp___18 ;
4874 size_t tmp___19 ;
4875 size_t tmp___20 ;
4876 size_t tmp___21 ;
4877 void *tmp___22 ;
4878 size_t tmp___23 ;
4879 size_t tmp___24 ;
4880 int tmp___25 ;
4881 int tmp___26 ;
4882 int tmp___27 ;
4883 unsigned short const **tmp___28 ;
4884 unsigned short const **tmp___29 ;
4885 int tmp___30 ;
4886
4887 {
4888 res = 0;
4889 tmp = s_zmalloc((int )(8193U * sizeof(char )));
4890 buf = (char *)tmp;
4891 swap_rule(buf, (char const *)(*(rules + rule___0))->mail_from, (int )cur_host);
4892 convert_rule(buf, 2);
4893 tmp___0 = strlen((char const *)buf);
4894 tmp___1 = s_malloc((unsigned long )((tmp___0 + 1U) * sizeof(char )));
4895 (*((*(hosts + cur_host))->smtp_check + rule___0))->mail_from = (char *)tmp___1;
4896 tmp___2 = strlen((char const *)buf);
4897 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->mail_from,
4898 (char const * __restrict )buf, tmp___2);
4899 tmp___3 = strlen((char const *)buf);
4900 *((*((*(hosts + cur_host))->smtp_check + rule___0))->mail_from + tmp___3) = (char )'\000';
4901 tmp___4 = write_smtp(sockfd, buf, cur_host);
4902 if (tmp___4 == -1) {
4903 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4904 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)6;
4905 free((void *)buf);
4906 return (-1);
4907 }
4908 memset((void *)buf, 0, 8192U);
4909 res = read_smtp(sockfd, buf, cur_host);
4910 if (res == -1) {
4911 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4912 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)7;
4913 free((void *)buf);
4914 return (-1);
4915 }
4916 tmp___30 = strncmp((char const *)buf, "250", 3U);
4917 if (tmp___30) {
4918 if ((int )*(buf + 0) == 53) {
4919 tmp___28 = __ctype_b_loc();
4920 if ((int const )*(*tmp___28 + (int )*(buf + 1)) & 2048) {
4921 tmp___29 = __ctype_b_loc();
4922 if ((int const )*(*tmp___29 + (int )*(buf + 2)) & 2048) {
4923 (*((*(hosts + cur_host))->smtp_check + rule___0))->passed = (unsigned char)3;
4924 tmp___9 = strlen((char const *)buf);
4925 tmp___10 = s_malloc((unsigned long )((tmp___9 + 1U) * sizeof(char )));
4926 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from = (char *)tmp___10;
4927 tmp___11 = strlen((char const *)buf);
4928 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from,
4929 (char const * __restrict )buf, tmp___11);
4930 tmp___12 = strlen((char const *)buf);
4931 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from + tmp___12) = (char )'\000';
4932 free((void *)buf);
4933 return (1);
4934 } else {
4935 goto _L___1;
4936 }
4937 } else {
4938 goto _L___1;
4939 }
4940 } else {
4941 _L___1: /* CIL Label */
4942 tmp___26 = strncmp((char const *)buf, "451", 3U);
4943 if (tmp___26) {
4944 tmp___27 = strncmp((char const *)buf, "452", 3U);
4945 if (tmp___27) {
4946 tmp___25 = strncmp((char const *)buf, "421", 3U);
4947 if (tmp___25) {
4948 (*(hosts + cur_host))->fatal_error = (unsigned char)6;
4949 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4950 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)8;
4951 tmp___21 = strlen((char const *)buf);
4952 tmp___22 = s_malloc((unsigned long )((tmp___21 + 1U) * sizeof(char )));
4953 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from = (char *)tmp___22;
4954 tmp___23 = strlen((char const *)buf);
4955 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from,
4956 (char const * __restrict )buf, tmp___23);
4957 tmp___24 = strlen((char const *)buf);
4958 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from + tmp___24) = (char )'\000';
4959 free((void *)buf);
4960 return (-1);
4961 } else {
4962 (*(hosts + cur_host))->fatal_error = (unsigned char)5;
4963 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4964 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)8;
4965 tmp___17 = strlen((char const *)buf);
4966 tmp___18 = s_malloc((unsigned long )((tmp___17 + 1U) * sizeof(char )));
4967 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from = (char *)tmp___18;
4968 tmp___19 = strlen((char const *)buf);
4969 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from,
4970 (char const * __restrict )buf, tmp___19);
4971 tmp___20 = strlen((char const *)buf);
4972 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from + tmp___20) = (char )'\000';
4973 free((void *)buf);
4974 return (-1);
4975 }
4976 } else {
4977 _L: /* CIL Label */
4978 (*(hosts + cur_host))->fatal_error = (unsigned char)7;
4979 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4980 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)8;
4981 tmp___13 = strlen((char const *)buf);
4982 tmp___14 = s_malloc((unsigned long )((tmp___13 + 1U) * sizeof(char )));
4983 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from = (char *)tmp___14;
4984 tmp___15 = strlen((char const *)buf);
4985 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from,
4986 (char const * __restrict )buf, tmp___15);
4987 tmp___16 = strlen((char const *)buf);
4988 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from + tmp___16) = (char )'\000';
4989 free((void *)buf);
4990 return (-1);
4991 }
4992 } else {
4993 goto _L;
4994 }
4995 }
4996 } else {
4997 tmp___5 = strlen((char const *)buf);
4998 tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
4999 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from = (char *)tmp___6;
5000 tmp___7 = strlen((char const *)buf);
5001 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from,
5002 (char const * __restrict )buf, tmp___7);
5003 tmp___8 = strlen((char const *)buf);
5004 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from + tmp___8) = (char )'\000';
5005 free((void *)buf);
5006 return (0);
5007 }
5008 free((void *)buf);
5009 return (-1);
5010 }
5011 }
5012 int check_rcpt_to(int *sockfd , long cur_host , int rule___0 )
5013 { char *buf ;
5014 int res ;
5015 void *tmp ;
5016 size_t tmp___0 ;
5017 void *tmp___1 ;
5018 size_t tmp___2 ;
5019 size_t tmp___3 ;
5020 int tmp___4 ;
5021 size_t tmp___5 ;
5022 void *tmp___6 ;
5023 size_t tmp___7 ;
5024 size_t tmp___8 ;
5025 size_t tmp___9 ;
5026 void *tmp___10 ;
5027 size_t tmp___11 ;
5028 size_t tmp___12 ;
5029 size_t tmp___13 ;
5030 void *tmp___14 ;
5031 size_t tmp___15 ;
5032 size_t tmp___16 ;
5033 size_t tmp___17 ;
5034 void *tmp___18 ;
5035 size_t tmp___19 ;
5036 size_t tmp___20 ;
5037 size_t tmp___21 ;
5038 void *tmp___22 ;
5039 size_t tmp___23 ;
5040 size_t tmp___24 ;
5041 size_t tmp___25 ;
5042 void *tmp___26 ;
5043 size_t tmp___27 ;
5044 size_t tmp___28 ;
5045 int tmp___29 ;
5046 int tmp___30 ;
5047 int tmp___31 ;
5048 int tmp___32 ;
5049 int tmp___33 ;
5050 int tmp___34 ;
5051 int tmp___35 ;
5052 int tmp___36 ;
5053 int tmp___37 ;
5054 unsigned short const **tmp___38 ;
5055 unsigned short const **tmp___39 ;
5056 int tmp___40 ;
5057
5058 {
5059 res = 0;
5060 tmp = s_zmalloc((int )(8193U * sizeof(char )));
5061 buf = (char *)tmp;
5062 swap_rule(buf, (char const *)(*(rules + rule___0))->rcpt_to, (int )cur_host);
5063 convert_rule(buf, 3);
5064 tmp___0 = strlen((char const *)buf);
5065 tmp___1 = s_malloc((unsigned long )((tmp___0 + 1U) * sizeof(char )));
5066 (*((*(hosts + cur_host))->smtp_check + rule___0))->rcpt_to = (char *)tmp___1;
5067 tmp___2 = strlen((char const *)buf);
5068 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->rcpt_to,
5069 (char const * __restrict )buf, tmp___2);
5070 tmp___3 = strlen((char const *)buf);
5071 *((*((*(hosts + cur_host))->smtp_check + rule___0))->rcpt_to + tmp___3) = (char )'\000';
5072 debug((char *)"Check rcpt_to: sending %s", buf);
5073 tmp___4 = write_smtp(sockfd, buf, cur_host);
5074 if (tmp___4 == -1) {
5075 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5076 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)9;
5077 free((void *)buf);
5078 return (-1);
5079 }
5080 memset((void *)buf, 0, 8192U);
5081 res = read_smtp(sockfd, buf, cur_host);
5082 if (res == -1) {
5083 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5084 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)10;
5085 free((void *)buf);
5086 return (-1);
5087 }
5088 debug((char *)"Check rcpt_to: received %s", buf);
5089 tmp___40 = strncmp((char const *)buf, "250", 3U);
5090 if (tmp___40) {
5091 if ((int )*(buf + 0) == 53) {
5092 tmp___38 = __ctype_b_loc();
5093 if ((int const )*(*tmp___38 + (int )*(buf + 1)) & 2048) {
5094 tmp___39 = __ctype_b_loc();
5095 if ((int const )*(*tmp___39 + (int )*(buf + 2)) & 2048) {
5096 (*((*(hosts + cur_host))->smtp_check + rule___0))->passed = (unsigned char)4;
5097 tmp___9 = strlen((char const *)buf);
5098 tmp___10 = s_malloc((unsigned long )((tmp___9 + 1U) * sizeof(char )));
5099 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to = (char *)tmp___10;
5100 tmp___11 = strlen((char const *)buf);
5101 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to,
5102 (char const * __restrict )buf, tmp___11);
5103 tmp___12 = strlen((char const *)buf);
5104 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to + tmp___12) = (char )'\000';
5105 free((void *)buf);
5106 return (1);
5107 } else {
5108 goto _L___2;
5109 }
5110 } else {
5111 goto _L___2;
5112 }
5113 } else {
5114 _L___2: /* CIL Label */
5115 tmp___32 = strncmp((char const *)buf, "450", 3U);
5116 if (tmp___32) {
5117 tmp___33 = strncmp((char const *)buf, "473", 3U);
5118 if (tmp___33) {
5119 tmp___34 = strncmp((char const *)buf, "500", 3U);
5120 if (tmp___34) {
5121 tmp___35 = strncmp((char const *)buf, "521", 3U);
5122 if (tmp___35) {
5123 tmp___36 = strncmp((char const *)buf, "530", 3U);
5124 if (tmp___36) {
5125 tmp___37 = strncmp((char const *)buf, "554", 3U);
5126 if (tmp___37) {
5127 tmp___30 = strncmp((char const *)buf, "451", 3U);
5128 if (tmp___30) {
5129 tmp___31 = strncmp((char const *)buf, "452", 3U);
5130 if (tmp___31) {
5131 tmp___29 = strncmp((char const *)buf, "421", 3U);
5132 if (tmp___29) {
5133 (*(hosts + cur_host))->fatal_error = (unsigned char)6;
5134 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5135 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)11;
5136 tmp___25 = strlen((char const *)buf);
5137 tmp___26 = s_malloc((unsigned long )((tmp___25 + 1U) * sizeof(char )));
5138 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to = (char *)tmp___26;
5139 tmp___27 = strlen((char const *)buf);
5140 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to,
5141 (char const * __restrict )buf, tmp___27);
5142 tmp___28 = strlen((char const *)buf);
5143 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to + tmp___28) = (char )'\000';
5144 free((void *)buf);
5145 return (-1);
5146 } else {
5147 (*(hosts + cur_host))->fatal_error = (unsigned char)5;
5148 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5149 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)11;
5150 tmp___21 = strlen((char const *)buf);
5151 tmp___22 = s_malloc((unsigned long )((tmp___21 + 1U) * sizeof(char )));
5152 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to = (char *)tmp___22;
5153 tmp___23 = strlen((char const *)buf);
5154 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to,
5155 (char const * __restrict )buf, tmp___23);
5156 tmp___24 = strlen((char const *)buf);
5157 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to + tmp___24) = (char )'\000';
5158 free((void *)buf);
5159 return (-1);
5160 }
5161 } else {
5162 _L: /* CIL Label */
5163 (*(hosts + cur_host))->fatal_error = (unsigned char)7;
5164 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5165 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)11;
5166 tmp___17 = strlen((char const *)buf);
5167 tmp___18 = s_malloc((unsigned long )((tmp___17 + 1U) * sizeof(char )));
5168 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to = (char *)tmp___18;
5169 tmp___19 = strlen((char const *)buf);
5170 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to,
5171 (char const * __restrict )buf, tmp___19);
5172 tmp___20 = strlen((char const *)buf);
5173 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to + tmp___20) = (char )'\000';
5174 free((void *)buf);
5175 return (-1);
5176 }
5177 } else {
5178 goto _L;
5179 }
5180 } else {
5181 _L___0: /* CIL Label */
5182 (*((*(hosts + cur_host))->smtp_check + rule___0))->passed = (unsigned char)4;
5183 tmp___13 = strlen((char const *)buf);
5184 tmp___14 = s_malloc((unsigned long )((tmp___13 + 1U) * sizeof(char )));
5185 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to = (char *)tmp___14;
5186 tmp___15 = strlen((char const *)buf);
5187 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to,
5188 (char const * __restrict )buf, tmp___15);
5189 tmp___16 = strlen((char const *)buf);
5190 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to + tmp___16) = (char )'\000';
5191 free((void *)buf);
5192 return (1);
5193 }
5194 } else {
5195 goto _L___0;
5196 }
5197 } else {
5198 goto _L___0;
5199 }
5200 } else {
5201 goto _L___0;
5202 }
5203 } else {
5204 goto _L___0;
5205 }
5206 } else {
5207 goto _L___0;
5208 }
5209 }
5210 } else {
5211 tmp___5 = strlen((char const *)buf);
5212 tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
5213 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to = (char *)tmp___6;
5214 tmp___7 = strlen((char const *)buf);
5215 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to,
5216 (char const * __restrict )buf, tmp___7);
5217 tmp___8 = strlen((char const *)buf);
5218 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to + tmp___8) = (char )'\000';
5219 free((void *)buf);
5220 return (0);
5221 }
5222 free((void *)buf);
5223 return (-1);
5224 }
5225 }
5226 int check_send_data_start(int *sockfd , long cur_host , int rule___0 )
5227 { char *buf ;
5228 int res ;
5229 void *tmp ;
5230 int tmp___0 ;
5231 size_t tmp___1 ;
5232 void *tmp___2 ;
5233 size_t tmp___3 ;
5234 size_t tmp___4 ;
5235 size_t tmp___5 ;
5236 void *tmp___6 ;
5237 size_t tmp___7 ;
5238 size_t tmp___8 ;
5239 size_t tmp___9 ;
5240 void *tmp___10 ;
5241 size_t tmp___11 ;
5242 size_t tmp___12 ;
5243 size_t tmp___13 ;
5244 void *tmp___14 ;
5245 size_t tmp___15 ;
5246 size_t tmp___16 ;
5247 size_t tmp___17 ;
5248 void *tmp___18 ;
5249 size_t tmp___19 ;
5250 size_t tmp___20 ;
5251 int tmp___21 ;
5252 int tmp___22 ;
5253 int tmp___23 ;
5254 unsigned short const **tmp___24 ;
5255 unsigned short const **tmp___25 ;
5256 int tmp___26 ;
5257
5258 {
5259 res = 0;
5260 tmp = s_zmalloc((int )(8193U * sizeof(char )));
5261 buf = (char *)tmp;
5262 tmp___0 = write_smtp(sockfd, (char *)"DATA\r\n", cur_host);
5263 if (tmp___0 == -1) {
5264 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5265 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)12;
5266 free((void *)buf);
5267 return (-1);
5268 }
5269 res = read_smtp(sockfd, buf, cur_host);
5270 if (res == -1) {
5271 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5272 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)13;
5273 free((void *)buf);
5274 return (-1);
5275 }
5276 tmp___26 = strncmp((char const *)buf, "354", 3U);
5277 if (tmp___26) {
5278 if ((int )*(buf + 0) == 53) {
5279 tmp___24 = __ctype_b_loc();
5280 if ((int const )*(*tmp___24 + (int )*(buf + 1)) & 2048) {
5281 tmp___25 = __ctype_b_loc();
5282 if ((int const )*(*tmp___25 + (int )*(buf + 2)) & 2048) {
5283 (*((*(hosts + cur_host))->smtp_check + rule___0))->passed = (unsigned char)5;
5284 tmp___5 = strlen((char const *)buf);
5285 tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
5286 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start = (char *)tmp___6;
5287 tmp___7 = strlen((char const *)buf);
5288 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start,
5289 (char const * __restrict )buf, tmp___7);
5290 tmp___8 = strlen((char const *)buf);
5291 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start + tmp___8) = (char )'\000';
5292 free((void *)buf);
5293 return (1);
5294 } else {
5295 goto _L___1;
5296 }
5297 } else {
5298 goto _L___1;
5299 }
5300 } else {
5301 _L___1: /* CIL Label */
5302 tmp___22 = strncmp((char const *)buf, "451", 3U);
5303 if (tmp___22) {
5304 tmp___23 = strncmp((char const *)buf, "452", 3U);
5305 if (tmp___23) {
5306 tmp___21 = strncmp((char const *)buf, "421", 3U);
5307 if (tmp___21) {
5308 (*(hosts + cur_host))->fatal_error = (unsigned char)6;
5309 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5310 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)14;
5311 tmp___17 = strlen((char const *)buf);
5312 tmp___18 = s_malloc((unsigned long )((tmp___17 + 1U) * sizeof(char )));
5313 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start = (char *)tmp___18;
5314 tmp___19 = strlen((char const *)buf);
5315 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start,
5316 (char const * __restrict )buf, tmp___19);
5317 tmp___20 = strlen((char const *)buf);
5318 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start + tmp___20) = (char )'\000';
5319 free((void *)buf);
5320 return (-1);
5321 } else {
5322 (*(hosts + cur_host))->fatal_error = (unsigned char)5;
5323 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5324 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)14;
5325 tmp___13 = strlen((char const *)buf);
5326 tmp___14 = s_malloc((unsigned long )((tmp___13 + 1U) * sizeof(char )));
5327 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start = (char *)tmp___14;
5328 tmp___15 = strlen((char const *)buf);
5329 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start,
5330 (char const * __restrict )buf, tmp___15);
5331 tmp___16 = strlen((char const *)buf);
5332 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start + tmp___16) = (char )'\000';
5333 free((void *)buf);
5334 return (-1);
5335 }
5336 } else {
5337 _L: /* CIL Label */
5338 (*(hosts + cur_host))->fatal_error = (unsigned char)7;
5339 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5340 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)14;
5341 tmp___9 = strlen((char const *)buf);
5342 tmp___10 = s_malloc((unsigned long )((tmp___9 + 1U) * sizeof(char )));
5343 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start = (char *)tmp___10;
5344 tmp___11 = strlen((char const *)buf);
5345 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start,
5346 (char const * __restrict )buf, tmp___11);
5347 tmp___12 = strlen((char const *)buf);
5348 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start + tmp___12) = (char )'\000';
5349 free((void *)buf);
5350 return (-1);
5351 }
5352 } else {
5353 goto _L;
5354 }
5355 }
5356 } else {
5357 tmp___1 = strlen((char const *)buf);
5358 tmp___2 = s_malloc((unsigned long )((tmp___1 + 1U) * sizeof(char )));
5359 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start = (char *)tmp___2;
5360 tmp___3 = strlen((char const *)buf);
5361 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start,
5362 (char const * __restrict )buf, tmp___3);
5363 tmp___4 = strlen((char const *)buf);
5364 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start + tmp___4) = (char )'\000';
5365 free((void *)buf);
5366 return (0);
5367 }
5368 free((void *)buf);
5369 return (-1);
5370 }
5371 }
5372 int check_send_data(int *sockfd , long cur_host , int rule___0 )
5373 { char *buf ;
5374 int res ;
5375 void *tmp ;
5376 int tmp___0 ;
5377 size_t tmp___1 ;
5378 void *tmp___2 ;
5379 size_t tmp___3 ;
5380 size_t tmp___4 ;
5381 size_t tmp___5 ;
5382 void *tmp___6 ;
5383 size_t tmp___7 ;
5384 size_t tmp___8 ;
5385 size_t tmp___9 ;
5386 void *tmp___10 ;
5387 size_t tmp___11 ;
5388 size_t tmp___12 ;
5389 size_t tmp___13 ;
5390 void *tmp___14 ;
5391 size_t tmp___15 ;
5392 size_t tmp___16 ;
5393 size_t tmp___17 ;
5394 void *tmp___18 ;
5395 size_t tmp___19 ;
5396 size_t tmp___20 ;
5397 size_t tmp___21 ;
5398 void *tmp___22 ;
5399 size_t tmp___23 ;
5400 size_t tmp___24 ;
5401 int tmp___25 ;
5402 int tmp___26 ;
5403 int tmp___27 ;
5404 int tmp___28 ;
5405 int tmp___29 ;
5406 int tmp___30 ;
5407 int tmp___31 ;
5408 int tmp___32 ;
5409 int tmp___33 ;
5410 int tmp___34 ;
5411 int tmp___35 ;
5412 int tmp___36 ;
5413
5414 {
5415 res = 0;
5416 tmp = s_zmalloc((int )(8193U * sizeof(char )));
5417 buf = (char *)tmp;
5418 return_data(cur_host, rule___0, buf);
5419 tmp___0 = write_smtp(sockfd, buf, cur_host);
5420 if (tmp___0 == -1) {
5421 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5422 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)15;
5423 free((void *)buf);
5424 return (-1);
5425 }
5426 memset((void *)buf, 0, 8192U);
5427 res = read_smtp(sockfd, buf, cur_host);
5428 if (res == -1) {
5429 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5430 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)16;
5431 free((void *)buf);
5432 return (-1);
5433 }
5434 tmp___36 = strncmp((char const *)buf, "250", 3U);
5435 if (tmp___36) {
5436 tmp___33 = strncmp((char const *)buf, "550", 3U);
5437 if (tmp___33) {
5438 tmp___34 = strncmp((char const *)buf, "55", 2U);
5439 if (tmp___34) {
5440 tmp___35 = strncmp((char const *)buf, "571", 3U);
5441 if (tmp___35) {
5442 tmp___28 = strncmp((char const *)buf, "450", 3U);
5443 if (tmp___28) {
5444 tmp___29 = strncmp((char const *)buf, "473", 3U);
5445 if (tmp___29) {
5446 tmp___30 = strncmp((char const *)buf, "500", 3U);
5447 if (tmp___30) {
5448 tmp___31 = strncmp((char const *)buf, "521", 3U);
5449 if (tmp___31) {
5450 tmp___32 = strncmp((char const *)buf, "530", 3U);
5451 if (tmp___32) {
5452 tmp___26 = strncmp((char const *)buf, "451", 3U);
5453 if (tmp___26) {
5454 tmp___27 = strncmp((char const *)buf, "452", 3U);
5455 if (tmp___27) {
5456 tmp___25 = strncmp((char const *)buf, "421", 3U);
5457 if (tmp___25) {
5458 (*(hosts + cur_host))->fatal_error = (unsigned char)6;
5459 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5460 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)17;
5461 tmp___21 = strlen((char const *)buf);
5462 tmp___22 = s_malloc((unsigned long )((tmp___21 + 1U) * sizeof(char )));
5463 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end = (char *)tmp___22;
5464 tmp___23 = strlen((char const *)buf);
5465 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end,
5466 (char const * __restrict )buf, tmp___23);
5467 tmp___24 = strlen((char const *)buf);
5468 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end + tmp___24) = (char )'\000';
5469 free((void *)buf);
5470 return (-1);
5471 } else {
5472 (*(hosts + cur_host))->fatal_error = (unsigned char)5;
5473 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5474 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)17;
5475 tmp___17 = strlen((char const *)buf);
5476 tmp___18 = s_malloc((unsigned long )((tmp___17 + 1U) * sizeof(char )));
5477 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end = (char *)tmp___18;
5478 tmp___19 = strlen((char const *)buf);
5479 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end,
5480 (char const * __restrict )buf, tmp___19);
5481 tmp___20 = strlen((char const *)buf);
5482 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end + tmp___20) = (char )'\000';
5483 free((void *)buf);
5484 return (-1);
5485 }
5486 } else {
5487 _L: /* CIL Label */
5488 (*(hosts + cur_host))->fatal_error = (unsigned char)7;
5489 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5490 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)17;
5491 tmp___13 = strlen((char const *)buf);
5492 tmp___14 = s_malloc((unsigned long )((tmp___13 + 1U) * sizeof(char )));
5493 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end = (char *)tmp___14;
5494 tmp___15 = strlen((char const *)buf);
5495 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end,
5496 (char const * __restrict )buf, tmp___15);
5497 tmp___16 = strlen((char const *)buf);
5498 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end + tmp___16) = (char )'\000';
5499 free((void *)buf);
5500 return (-1);
5501 }
5502 } else {
5503 goto _L;
5504 }
5505 } else {
5506 _L___0: /* CIL Label */
5507 (*((*(hosts + cur_host))->smtp_check + rule___0))->passed = (unsigned char)6;
5508 tmp___9 = strlen((char const *)buf);
5509 tmp___10 = s_malloc((unsigned long )((tmp___9 + 1U) * sizeof(char )));
5510 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end = (char *)tmp___10;
5511 tmp___11 = strlen((char const *)buf);
5512 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end,
5513 (char const * __restrict )buf, tmp___11);
5514 tmp___12 = strlen((char const *)buf);
5515 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end + tmp___12) = (char )'\000';
5516 free((void *)buf);
5517 return (1);
5518 }
5519 } else {
5520 goto _L___0;
5521 }
5522 } else {
5523 goto _L___0;
5524 }
5525 } else {
5526 goto _L___0;
5527 }
5528 } else {
5529 goto _L___0;
5530 }
5531 } else {
5532 _L___1: /* CIL Label */
5533 (*((*(hosts + cur_host))->smtp_check + rule___0))->passed = (unsigned char)6;
5534 tmp___5 = strlen((char const *)buf);
5535 tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
5536 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end = (char *)tmp___6;
5537 tmp___7 = strlen((char const *)buf);
5538 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end,
5539 (char const * __restrict )buf, tmp___7);
5540 tmp___8 = strlen((char const *)buf);
5541 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end + tmp___8) = (char )'\000';
5542 free((void *)buf);
5543 return (1);
5544 }
5545 } else {
5546 goto _L___1;
5547 }
5548 } else {
5549 goto _L___1;
5550 }
5551 } else {
5552 tmp___1 = strlen((char const *)buf);
5553 tmp___2 = s_malloc((unsigned long )((tmp___1 + 1U) * sizeof(char )));
5554 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end = (char *)tmp___2;
5555 tmp___3 = strlen((char const *)buf);
5556 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end,
5557 (char const * __restrict )buf, tmp___3);
5558 tmp___4 = strlen((char const *)buf);
5559 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end + tmp___4) = (char )'\000';
5560 free((void *)buf);
5561 return (0);
5562 }
5563 free((void *)buf);
5564 return (-1);
5565 }
5566 }
5567 int suspected_open_relay(long cur_host , int rule___0 )
5568 {
5569
5570 {
5571 return (0);
5572 }
5573 }
5574 int reset_smtp(int *sockfd , long cur_host , int rule___0 )
5575 { char *buf ;
5576 int res ;
5577 void *tmp ;
5578 int tmp___0 ;
5579 size_t tmp___1 ;
5580 void *tmp___2 ;
5581 size_t tmp___3 ;
5582 size_t tmp___4 ;
5583 size_t tmp___5 ;
5584 void *tmp___6 ;
5585 size_t tmp___7 ;
5586 size_t tmp___8 ;
5587 int tmp___9 ;
5588
5589 {
5590 res = 0;
5591 tmp = s_zmalloc((int )(8193U * sizeof(char )));
5592 buf = (char *)tmp;
5593 tmp___0 = write_smtp(sockfd, (char *)"RSET\r\n", cur_host);
5594 if (tmp___0 == -1) {
5595 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5596 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)18;
5597 free((void *)buf);
5598 return (-1);
5599 }
5600 res = read_smtp(sockfd, buf, cur_host);
5601 if (res == -1) {
5602 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5603 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)19;
5604 free((void *)buf);
5605 return (-1);
5606 }
5607 tmp___9 = strncmp((char const *)buf, "250", 3U);
5608 if (tmp___9) {
5609 (*(hosts + cur_host))->fatal_error = (unsigned char)8;
5610 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5611 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)20;
5612 tmp___1 = strlen((char const *)buf);
5613 tmp___2 = s_malloc((unsigned long )((tmp___1 + 1U) * sizeof(char )));
5614 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_reset = (char *)tmp___2;
5615 tmp___3 = strlen((char const *)buf);
5616 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_reset,
5617 (char const * __restrict )buf, tmp___3);
5618 tmp___4 = strlen((char const *)buf);
5619 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_reset + tmp___4) = (char )'\000';
5620 free((void *)buf);
5621 return (-1);
5622 } else {
5623 tmp___5 = strlen((char const *)buf);
5624 tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
5625 (*((*(hosts + cur_host))->smtp_check + rule___0))->r_reset = (char *)tmp___6;
5626 tmp___7 = strlen((char const *)buf);
5627 strncpy((char * __restrict )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_reset,
5628 (char const * __restrict )buf, tmp___7);
5629 tmp___8 = strlen((char const *)buf);
5630 *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_reset + tmp___8) = (char )'\000';
5631 free((void *)buf);
5632 return (0);
5633 }
5634 free((void *)buf);
5635 return (0);
5636 }
5637 }
5638 int quit_smtp(int *sockfd , long cur_host , int rule___0 )
5639 { char *buf ;
5640 int res ;
5641 void *tmp ;
5642 int tmp___0 ;
5643 size_t tmp___1 ;
5644 void *tmp___2 ;
5645 size_t tmp___3 ;
5646 size_t tmp___4 ;
5647 size_t tmp___5 ;
5648 void *tmp___6 ;
5649 size_t tmp___7 ;
5650 size_t tmp___8 ;
5651 int tmp___9 ;
5652
5653 {
5654 res = 0;
5655 tmp = s_zmalloc((int )(8193U * sizeof(char )));
5656 buf = (char *)tmp;
5657 tmp___0 = write_smtp(sockfd, (char *)"QUIT\r\n", cur_host);
5658 if (tmp___0 == -1) {
5659 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5660 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)21;
5661 free((void *)buf);
5662 return (-1);
5663 }
5664 res = read_smtp(sockfd, buf, cur_host);
5665 if (res == -1) {
5666 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5667 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)22;
5668 free((void *)buf);
5669 return (-1);
5670 }
5671 tmp___9 = strncmp((char const *)buf, "221", 3U);
5672 if (tmp___9) {
5673 (*(hosts + cur_host))->fatal_error = (unsigned char)9;
5674 (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5675 (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)23;
5676 tmp___1 = strlen((char const *)buf);
5677 tmp___2 = s_malloc((unsigned long )((tmp___1 + 1U) * sizeof(char )));
5678 (*(hosts + cur_host))->r_quit = (char *)tmp___2;
5679 tmp___3 = strlen((char const *)buf);
5680 strncpy((char * __restrict )(*(hosts + cur_host))->r_quit, (char const * __restrict )buf,
5681 tmp___3);
5682 tmp___4 = strlen((char const *)buf);
5683 *((*(hosts + cur_host))->r_quit + tmp___4) = (char )'\000';
5684 free((void *)buf);
5685 return (-1);
5686 } else {
5687 tmp___5 = strlen((char const *)buf);
5688 tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
5689 (*(hosts + cur_host))->r_quit = (char *)tmp___6;
5690 tmp___7 = strlen((char const *)buf);
5691 strncpy((char * __restrict )(*(hosts + cur_host))->r_quit, (char const * __restrict )buf,
5692 tmp___7);
5693 tmp___8 = strlen((char const *)buf);
5694 *((*(hosts + cur_host))->r_quit + tmp___8) = (char )'\000';
5695 free((void *)buf);
5696 return (0);
5697 }
5698 free((void *)buf);
5699 return (0);
5700 }
5701 }
5702 #pragma merger(0,"/tmp/cil-gbAoEKxk.i","-Wall,-g,-pthread")
5703 void usage(char *pname )
5704 {
5705
5706 {
5707 printf((char const * __restrict )"\n\nUsage: %s -c [config file] -s [iprange] -w [path to html file] -b [email address to relay to] -e [path to mbox]\n",
5708 pname);
5709 printf((char const * __restrict )"\nOptions:\n\n");
5710 printf((char const * __restrict )"-p [number of threads]\n");
5711 printf((char const * __restrict )"\t\tForks the specified number of threads\n");
5712 printf((char const * __restrict )"\t\tSet this to whatever works best for the machine\n");
5713 printf((char const * __restrict )"\t\tFreeBSD seems fine with 400+ The Linux test\n");
5714 printf((char const * __restrict )"\t\tmachine won\'t take anymore that 250\n");
5715 printf((char const * __restrict )"\n-b [email address]\n");
5716 printf((char const * __restrict )"\t\tWhen this option is supplied, SmtpRC will send email\n");
5717 printf((char const * __restrict )"\t\tthrough any servers that fail any tests. It must\n");
5718 printf((char const * __restrict )"\t\talso correspond with the configuration file. see the\n");
5719 printf((char const * __restrict )"\t\tREADME file for more info.\n");
5720 printf((char const * __restrict )"\n-e [path to mbox]\n");
5721 printf((char const * __restrict )"\t\tWhen this opton is used SmtpRC will check the mail file\n");
5722 printf((char const * __restrict )"\t\tspecified for relayed emails\n");
5723 printf((char const * __restrict )"\n-u [path to maildir]\n");
5724 printf((char const * __restrict )"\t\tWhen this opton is used SmtpRC will check the maildir\n");
5725 printf((char const * __restrict )"\t\tspecified for relayed emails\n");
5726 printf((char const * __restrict )"\n-w [filename]\n");
5727 printf((char const * __restrict )"\t\tPrints detailed HTML output of all failed\n");
5728 printf((char const * __restrict )"\t\tchecks to the filename specified. If used with the -a\n");
5729 printf((char const * __restrict )"\t\toption it will print all checks not just those that\n");
5730 printf((char const * __restrict )"\t\tfailed\n");
5731 printf((char const * __restrict )"\n-f [filename]\n");
5732 printf((char const * __restrict )"\t\tOutput results in text format\n");
5733 printf((char const * __restrict )"\n-o [filename]\n");
5734 printf((char const * __restrict )"\t\tOutput results in machine readable format (comma\n");
5735 printf((char const * __restrict )"\t\tseperated values)\n");
5736 printf((char const * __restrict )"\n-c [config file]\n");
5737 printf((char const * __restrict )"\t\tRead the checks from the specified filename.\n");
5738 printf((char const * __restrict )"\n-y [email template file]\n");
5739 printf((char const * __restrict )"\t\tSpecify an email template to use.\n");
5740 printf((char const * __restrict )"\n-s [ip address range]\n");
5741 printf((char const * __restrict )"\t\tYou can use this option to specify\n");
5742 printf((char const * __restrict )"\t\tthe ip address range (or single host) to scan for\n");
5743 printf((char const * __restrict )"\t\topen relay\'s. Must be in the format 127.0.*.1-200\n");
5744 printf((char const * __restrict )"\n-i [ip list file]\n");
5745 printf((char const * __restrict )"\t\tUse this option to specify a list of ip addresses or\n");
5746 printf((char const * __restrict )"\t\thostnames to scan\n");
5747 printf((char const * __restrict )"\n-k [config file to generate]\n");
5748 printf((char const * __restrict )"\t\tUse this option to generate an automatic config file with the options\n");
5749 printf((char const * __restrict )"\t\tused on the command line\n");
5750 printf((char const * __restrict )"\n-j [auto config file]\n");
5751 printf((char const * __restrict )"\t\tuse this option to use an automatic config file\n");
5752 printf((char const * __restrict )"\n-r [timeout]\n");
5753 printf((char const * __restrict )"\t\tSpecify a timeout value used for reading\n");
5754 printf((char const * __restrict )"\t\tdata from hosts. The default is 60 seconds but you\n");
5755 printf((char const * __restrict )"\t\tmay have to increase it up to 90+.\n");
5756 printf((char const * __restrict )"\n-m [time to wait]\n");
5757 printf((char const * __restrict )"\t\tUse this option to specify the time to wait before checking\n");
5758 printf((char const * __restrict )"\t\tthe mail file\n");
5759 printf((char const * __restrict )"\n-l [timeout]\n");
5760 printf((char const * __restrict )"\t\tSpecify a timeout value used for connecting\n");
5761 printf((char const * __restrict )"\t\tto hosts. The default is 30 seconds but you may\n");
5762 printf((char const * __restrict )"\t\tneed to increase it with slow networks\n");
5763 printf((char const * __restrict )"\n-n\t\tUsing this option will convert all IP addresses to\n");
5764 printf((char const * __restrict )"\t\tdomiain names\n");
5765 printf((char const * __restrict )"\n-a\t\tThis option will print all of the checks to the output file\n");
5766 printf((char const * __restrict )"\t\tspecified not just the tests that fail. Failed tests\n");
5767 printf((char const * __restrict )"\t\twill be highlighted in red\n");
5768 printf((char const * __restrict )"\n-v\t\tVerbose mode. This is not a rcommended option. It\n");
5769 printf((char const * __restrict )"\t\tdisplays more output about what\'s going on.\n");
5770 fflush(stdout);
5771 exit(0);
5772 }
5773 }
5774 void banner(void)
5775 {
5776
5777 {
5778 printf((char const * __restrict )"\n\n\n\n\t----------------------------\n");
5779 printf((char const * __restrict )"\t| SMTP Relay Checker |\n");
5780 printf((char const * __restrict )"\t| Spencer Hardy |\n");
5781 printf((char const * __restrict )"\t| diceman@dircon.co.uk |\n");
5782 printf((char const * __restrict )"\t| 2.0.3 |\n");
5783 printf((char const * __restrict )"\t----------------------------\n\n\n\n");
5784 fflush(stdout);
5785 return;
5786 }
5787 }
syntax highlighted by Code2HTML, v. 0.9.1