fix: timeout changed to 2s + invalid free fix when the socket creation fails
This commit is contained in:
2
Makefile
2
Makefile
@ -16,7 +16,7 @@ obj/%.o: src/%.c
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
$(NAME): $(OBJ)
|
||||
$(LD) $(LDFLAGS) -o $(NAME) $(OBJ)
|
||||
$(LD) -o $(NAME) $(OBJ) $(LDFLAGS)
|
||||
|
||||
clean:
|
||||
rm -rf obj
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
#include "scan.h"
|
||||
|
||||
#define TIMEOUT 5
|
||||
#define TIMEOUT 2
|
||||
|
||||
typedef enum {
|
||||
CLOSED,
|
||||
|
14
src/packet.c
14
src/packet.c
@ -74,14 +74,10 @@ static void *create_packet(const struct scan *data, size_t packet_size)
|
||||
|
||||
iphdr->check = checksum(packet, packet_size);
|
||||
|
||||
// this is starnakin stuff
|
||||
switch ((int)isudp) {
|
||||
case true:
|
||||
if (isudp)
|
||||
create_udp_packet(packet + sizeof(struct iphdr), data);
|
||||
break;
|
||||
default:
|
||||
else
|
||||
create_tcp_packet(packet + sizeof(struct iphdr), data);
|
||||
}
|
||||
|
||||
return packet;
|
||||
}
|
||||
@ -98,12 +94,6 @@ int send_packet(const struct scan *data, int sockfd)
|
||||
: sizeof(struct tcphdr));
|
||||
void *packet = create_packet(data, packet_size);
|
||||
|
||||
int one = 1;
|
||||
const int *val = &one;
|
||||
if (setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, val, sizeof(one)) < 0) {
|
||||
perror("Error setting IP_HDRINCL");
|
||||
return -1;
|
||||
}
|
||||
|
||||
sendto(sockfd, packet, packet_size, 0, (struct sockaddr *)&conn_addr,
|
||||
sizeof(struct sockaddr_in));
|
||||
|
@ -64,6 +64,13 @@ int scan(struct scan *data)
|
||||
return -1;
|
||||
}
|
||||
|
||||
int one = 1;
|
||||
const int *val = &one;
|
||||
if (setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, val, sizeof(one)) < 0) {
|
||||
perror("Error setting IP_HDRINCL");
|
||||
return -1;
|
||||
}
|
||||
|
||||
char errbuf[PCAP_ERRBUF_SIZE];
|
||||
bpf_u_int32 net, mask;
|
||||
|
||||
|
@ -25,10 +25,8 @@ void *routine(void *p_data)
|
||||
scan_data.port_end = port;
|
||||
scan_data.responses =
|
||||
&thread_data->responses[port - thread_data->port_start];
|
||||
if (scan(&scan_data)) {
|
||||
free(p_data);
|
||||
if (scan(&scan_data))
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
Reference in New Issue
Block a user