mirror of
https://github.com/vanhauser-thc/thc-hydra.git
synced 2025-08-19 21:03:52 -07:00
Removed repeated code.
This commit is contained in:
parent
f5e74749f8
commit
4186a3ad43
1 changed files with 27 additions and 36 deletions
|
@ -127,56 +127,47 @@ int add_header(char *header, char *value, char type){
|
||||||
// get to the last header
|
// get to the last header
|
||||||
for(cur_ptr = ptr_head; cur_ptr && cur_ptr->next; cur_ptr = cur_ptr->next);
|
for(cur_ptr = ptr_head; cur_ptr && cur_ptr->next; cur_ptr = cur_ptr->next);
|
||||||
|
|
||||||
ptr_header_node new_ptr = (ptr_header_node) malloc(sizeof(t_header_node));
|
ptr_header_node existing_hdr,
|
||||||
|
new_ptr = (ptr_header_node) malloc(sizeof(t_header_node));
|
||||||
|
|
||||||
char * new_header = strdup(header);
|
char * new_header = strdup(header);
|
||||||
char * new_value = strdup(value);
|
char * new_value = strdup(value);
|
||||||
|
|
||||||
if(new_ptr && new_header && new_value){
|
if(new_ptr && new_header && new_value){
|
||||||
if(type == HEADER_TYPE_USERHEADER){
|
if((type == HEADER_TYPE_USERHEADER) ||
|
||||||
// create a new item and append it to the list
|
(type == HEADER_TYPE_DEFAULT && !header_exists(new_header, HEADER_TYPE_USERHEADER_REPL)) ||
|
||||||
|
(type == HEADER_TYPE_USERHEADER_REPL && !header_exists(new_header, HEADER_TYPE_DEFAULT))){
|
||||||
|
/*
|
||||||
|
* We are in one of the following scenarios:
|
||||||
|
* 1. A default header with no user-supplied headers that replace it.
|
||||||
|
* 2. A user-supplied header that must be appended (option 'h').
|
||||||
|
* 3. A user-supplied header that must replace a default header (option 'h'),
|
||||||
|
* but no default headers exist with that name.
|
||||||
|
*
|
||||||
|
* In either case we just add the header to the list.
|
||||||
|
*/
|
||||||
new_ptr->header = new_header;
|
new_ptr->header = new_header;
|
||||||
new_ptr->value = new_value;
|
new_ptr->value = new_value;
|
||||||
new_ptr->type = type;
|
new_ptr->type = type;
|
||||||
new_ptr->next = NULL;
|
new_ptr->next = NULL;
|
||||||
hydra_report(stdout, "[DEBUG] Added header (HEADER_TYPE_USERHEADER) %s: %s\n", new_header, new_value);
|
|
||||||
}else if(type == HEADER_TYPE_DEFAULT && !header_exists(new_header, HEADER_TYPE_USERHEADER_REPL)){
|
|
||||||
// It's a default header and there are no user headers that replace it,
|
|
||||||
// so we create a new item and append it to the list
|
|
||||||
new_ptr->header = new_header;
|
|
||||||
new_ptr->value = new_value;
|
|
||||||
new_ptr->type = type;
|
|
||||||
new_ptr->next = NULL;
|
|
||||||
hydra_report(stdout, "[DEBUG] Added header (HEADER_TYPE_DEFAULT) %s: %s\n", new_header, new_value);
|
|
||||||
}else if(type == HEADER_TYPE_USERHEADER_REPL){
|
|
||||||
// It's a user-supplied header that must replace a default one
|
|
||||||
ptr_header_node hdr_val = header_exists(new_header, HEADER_TYPE_DEFAULT);
|
|
||||||
if(!hdr_val){
|
|
||||||
// There are no headers with the same name, so we act
|
|
||||||
// as if it was a normal header
|
|
||||||
new_ptr->header = new_header;
|
|
||||||
new_ptr->value = new_value;
|
|
||||||
new_ptr->type = type;
|
|
||||||
new_ptr->next = NULL;
|
|
||||||
hydra_report(stdout, "[DEBUG] Added header (HEADER_TYPE_USERHEADER_REPL) %s: %s\n", new_header, new_value);
|
|
||||||
}else{
|
|
||||||
// Replace the default header's value with this new value
|
|
||||||
free(hdr_val->value);
|
|
||||||
hdr_val->value = new_value;
|
|
||||||
hdr_val->type = type;
|
|
||||||
hydra_report(stdout, "[DEBUG] Replaced header (HEADER_TYPE_USERHEADER_REPL) %s: %s\n", hdr_val->header, hdr_val->value);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
// we're out of memory, so forcefully end
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(cur_ptr)
|
if(cur_ptr)
|
||||||
cur_ptr->next = new_ptr;
|
cur_ptr->next = new_ptr;
|
||||||
else
|
else
|
||||||
// head is NULL, so the list is empty
|
// head is NULL, so the list is empty
|
||||||
ptr_head = new_ptr;
|
ptr_head = new_ptr;
|
||||||
|
}else if(type == HEADER_TYPE_USERHEADER_REPL && (existing_hdr = header_exists(new_header, HEADER_TYPE_DEFAULT))){
|
||||||
|
// It's a user-supplied header that must replace a default one
|
||||||
|
// Replace the default header's value with this new value
|
||||||
|
free(existing_hdr->value);
|
||||||
|
existing_hdr->value = new_value;
|
||||||
|
existing_hdr->type = type;
|
||||||
|
hydra_report(stdout, "[DEBUG] Replaced header (HEADER_TYPE_USERHEADER_REPL) %s: %s\n", existing_hdr->header, existing_hdr->value);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
// we're out of memory, so forcefully end
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue