Skip to content

Commit

Permalink
Call memcmp() once per compare values during sort
Browse files Browse the repository at this point in the history
  • Loading branch information
RealEnder committed May 19, 2024
1 parent d182085 commit 3b38aaf
Show file tree
Hide file tree
Showing 3 changed files with 119 additions and 67 deletions.
42 changes: 28 additions & 14 deletions include/hcxhashtool.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,41 +92,49 @@ static int sort_hashlist_by_essid(const void *a, const void *b)
{
const hashlist_t *ia = (const hashlist_t *)a;
const hashlist_t *ib = (const hashlist_t *)b;
int cmp;

if(memcmp(ia->essid, ib->essid, ESSID_LEN_MAX) > 0) return 1;
else if(memcmp(ia->essid, ib->essid, ESSID_LEN_MAX) < 0) return -1;
cmp = memcmp(ia->essid, ib->essid, ESSID_LEN_MAX);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
return 0;
}

static int sort_hashlist_by_essidlen(const void *a, const void *b)
{
const hashlist_t *ia = (const hashlist_t *)a;
const hashlist_t *ib = (const hashlist_t *)b;
int cmp;

if(ia->essidlen > ib->essidlen) return 1;
else if(ia->essidlen < ib->essidlen) return -1;
if(memcmp(ia->essid, ib->essid, ia->essidlen) > 0) return 1;
else if(memcmp(ia->essid, ib->essid, ia->essidlen) < 0) return -1;
cmp = memcmp(ia->essid, ib->essid, ia->essidlen);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
return 0;
}

static int sort_hashlist_by_macap(const void *a, const void *b)
{
const hashlist_t *ia = (const hashlist_t *)a;
const hashlist_t *ib = (const hashlist_t *)b;
int cmp;

if(memcmp(ia->ap, ib->ap, 6) > 0) return 1;
else if(memcmp(ia->ap, ib->ap, 6) < 0) return -1;
cmp = memcmp(ia->ap, ib->ap, 6);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
return 0;
}

static int sort_hashlist_by_macclient(const void *a, const void *b)
{
const hashlist_t *ia = (const hashlist_t *)a;
const hashlist_t *ib = (const hashlist_t *)b;
int cmp;

if(memcmp(ia->client, ib->client, 6) > 0) return 1;
else if(memcmp(ia->client, ib->client, 6) < 0) return -1;
cmp = memcmp(ia->client, ib->client, 6);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
return 0;
}

Expand Down Expand Up @@ -156,9 +164,11 @@ static int sort_ouilist_by_oui(const void *a, const void *b)
{
const ouilist_t *ia = (const ouilist_t *)a;
const ouilist_t *ib = (const ouilist_t *)b;
int cmp;

if(memcmp(ia->oui, ib->oui, 3) > 0) return 1;
else if(memcmp(ia->oui, ib->oui, 3) < 0) return -1;
cmp = memcmp(ia->oui, ib->oui, 3);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
return 0;
}
/*===========================================================================*/
Expand All @@ -174,11 +184,13 @@ static int sort_essidlistin(const void *a, const void *b)
{
const essidlist_t *ia = (const essidlist_t *)a;
const essidlist_t *ib = (const essidlist_t *)b;
int cmp;

if(ia->essidlen > ib->essidlen) return 1;
else if(ia->essidlen < ib->essidlen) return -1;
if(memcmp(ia->essid, ib->essid, ia->essidlen) > 0) return 1;
else if(memcmp(ia->essid, ib->essid, ia->essidlen) < 0) return -1;
cmp = memcmp(ia->essid, ib->essid, ia->essidlen);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
return 0;
}
/*===========================================================================*/
Expand All @@ -193,9 +205,11 @@ static int sort_maclistin(const void *a, const void *b)
{
const maclist_t *ia = (const maclist_t *)a;
const maclist_t *ib = (const maclist_t *)b;
int cmp;

if(memcmp(ia->mac, ib->mac, 6) > 0) return 1;
else if(memcmp(ia->mac, ib->mac, 6) < 0) return -1;
cmp = memcmp(ia->mac, ib->mac, 6);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
return 0;
}
/*===========================================================================*/
Expand Down
130 changes: 81 additions & 49 deletions include/hcxpcapngtool.h
Original file line number Diff line number Diff line change
Expand Up @@ -191,37 +191,47 @@ static int sort_maclist_by_mac(const void *a, const void *b)
{
const maclist_t *ia = (const maclist_t *)a;
const maclist_t *ib = (const maclist_t *)b;
if(memcmp(ia->addr, ib->addr, 6) > 0) return 1;
else if(memcmp(ia->addr, ib->addr, 6) < 0) return -1;
int cmp;

cmp = memcmp(ia->addr, ib->addr, 6);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
if(ia->essidlen < ib->essidlen) return 1;
else if(ia->essidlen > ib->essidlen) return -1;
if(memcmp(ia->essid, ib->essid, ib->essidlen) < 0) return 1;
else if(memcmp(ia->essid, ib->essid, ib->essidlen) > 0) return -1;
cmp = memcmp(ia->essid, ib->essid, ib->essidlen);
if(cmp < 0) return 1;
else if(cmp > 0) return -1;
return 0;
}

static int sort_maclist_by_mac_count(const void *a, const void *b)
{
const maclist_t *ia = (const maclist_t *)a;
const maclist_t *ib = (const maclist_t *)b;
if(memcmp(ia->addr, ib->addr, 6) > 0) return 1;
else if(memcmp(ia->addr, ib->addr, 6) < 0) return -1;
int cmp;

cmp = memcmp(ia->addr, ib->addr, 6);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
if(ia->count < ib->count) return 1;
else if(ia->count > ib->count) return -1;
if(ia->essidlen < ib->essidlen) return 1;
else if(ia->essidlen > ib->essidlen) return -1;
if(memcmp(ia->essid, ib->essid, ib->essidlen) < 0) return 1;
else if(memcmp(ia->essid, ib->essid, ib->essidlen) > 0) return -1;
cmp = memcmp(ia->essid, ib->essid, ib->essidlen);
if(cmp < 0) return 1;
else if(cmp > 0) return -1;
return 0;
}

static int sort_maclist_by_essidlen(const void *a, const void *b)
{
const maclist_t *ia = (const maclist_t *)a;
const maclist_t *ib = (const maclist_t *)b;
int cmp;

if(memcmp(ia->essid, ib->essid, ib->essidlen) > 0) return 1;
else if(memcmp(ia->essid, ib->essid, ib->essidlen) < 0) return -1;
cmp = memcmp(ia->essid, ib->essid, ib->essidlen);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
if(ia->essidlen > ib->essidlen) return 1;
else if(ia->essidlen < ib->essidlen) return -1;
return 0;
Expand All @@ -231,13 +241,16 @@ static int sort_maclist_by_manufacturer(const void *a, const void *b)
{
const maclist_t *ia = (const maclist_t *)a;
const maclist_t *ib = (const maclist_t *)b;
int cmp;

if(memcmp(ia->manufacturer, ib->manufacturer, ib->manufacturerlen) > 0) return 1;
else if(memcmp(ia->manufacturer, ib->manufacturer, ib->manufacturerlen) < 0) return -1;
cmp = memcmp(ia->manufacturer, ib->manufacturer, ib->manufacturerlen);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
if(ia->manufacturerlen > ib->manufacturerlen) return 1;
else if(ia->manufacturerlen < ib->manufacturerlen) return -1;
if(memcmp(ia->addr, ib->addr, 6) > 0) return 1;
else if(memcmp(ia->addr, ib->addr, 6) < 0) return -1;
cmp = memcmp(ia->addr, ib->addr, 6);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
return 0;
}
/*===========================================================================*/
Expand Down Expand Up @@ -307,11 +320,14 @@ static int sort_handshakelist_by_timegap(const void *a, const void *b)
{
const handshakelist_t *ia = (const handshakelist_t *)a;
const handshakelist_t *ib = (const handshakelist_t *)b;

if(memcmp(ia->ap, ib->ap, 6) > 0) return 1;
else if(memcmp(ia->ap, ib->ap, 6) < 0) return -1;
if(memcmp(ia->client, ib->client, 6) > 0) return 1;
else if(memcmp(ia->client, ib->client, 6) < 0) return -1;
int cmp;

cmp = memcmp(ia->ap, ib->ap, 6);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
cmp = memcmp(ia->client, ib->client, 6);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
if(ia->timestampgap > ib->timestampgap) return 1;
else if(ia->timestampgap < ib->timestampgap) return -1;
if(ia->rcgap > ib->rcgap) return 1;
Expand All @@ -325,11 +341,14 @@ static int sort_handshakelist_by_rcgap(const void *a, const void *b)
{
const handshakelist_t *ia = (const handshakelist_t *)a;
const handshakelist_t *ib = (const handshakelist_t *)b;

if(memcmp(ia->ap, ib->ap, 6) > 0) return 1;
else if(memcmp(ia->ap, ib->ap, 6) < 0) return -1;
if(memcmp(ia->client, ib->client, 6) > 0) return 1;
else if(memcmp(ia->client, ib->client, 6) < 0) return -1;
int cmp;

cmp = memcmp(ia->ap, ib->ap, 6);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
cmp = memcmp(ia->client, ib->client, 6);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
if(ia->rcgap > ib->rcgap) return 1;
else if(ia->rcgap < ib->rcgap) return -1;
if(ia->timestampgap > ib->timestampgap) return 1;
Expand Down Expand Up @@ -357,13 +376,17 @@ static int sort_pmkidlist_by_mac(const void *a, const void *b)
{
const pmkidlist_t *ia = (const pmkidlist_t *)a;
const pmkidlist_t *ib = (const pmkidlist_t *)b;

if(memcmp(ia->ap, ib->ap, 6) > 0) return 1;
else if(memcmp(ia->ap, ib->ap, 6) < 0) return -1;
if(memcmp(ia->client, ib->client, 6) > 0) return 1;
else if(memcmp(ia->client, ib->client, 6) < 0) return -1;
if(memcmp(ia->pmkid, ib->pmkid, 6) < 0) return 1;
else if(memcmp(ia->pmkid, ib->pmkid, 6) > 0) return -1;
int cmp;

cmp = memcmp(ia->ap, ib->ap, 6);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
cmp = memcmp(ia->client, ib->client, 6);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
cmp = memcmp(ia->pmkid, ib->pmkid, 6);
if(cmp < 0) return 1;
else if(cmp > 0) return -1;
return 0;
}
/*===========================================================================*/
Expand Down Expand Up @@ -402,13 +425,16 @@ static int sort_eapmd5hashlist_by_id(const void *a, const void *b)
{
const eapmd5hashlist_t *ia = (const eapmd5hashlist_t *)a;
const eapmd5hashlist_t *ib = (const eapmd5hashlist_t *)b;
int cmp;

if(ia->id < ib->id) return 1;
else if(ia->id > ib->id) return -1;
if(memcmp(ia->md5request, ib->md5request, EAPMD5_LEN_MAX) > 0) return 1;
else if(memcmp(ia->md5request, ib->md5request, EAPMD5_LEN_MAX) < 0) return -1;
if(memcmp(ia->md5response, ib->md5request, EAPMD5_LEN_MAX) > 0) return 1;
else if(memcmp(ia->md5response, ib->md5response, EAPMD5_LEN_MAX) < 0) return -1;
cmp = memcmp(ia->md5request, ib->md5request, EAPMD5_LEN_MAX);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
cmp = memcmp(ia->md5response, ib->md5response, EAPMD5_LEN_MAX);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
return 0;
}
/*===========================================================================*/
Expand Down Expand Up @@ -452,18 +478,21 @@ static int sort_eapleaphashlist_by_id(const void *a, const void *b)
{
const eapleaphashlist_t *ia = (const eapleaphashlist_t *)a;
const eapleaphashlist_t *ib = (const eapleaphashlist_t *)b;
int cmp;

if(ia->id < ib->id) return 1;
else if(ia->id > ib->id) return -1;
if(ia->leapusernamelen > ib->leapusernamelen) return 1;
if(ia->leapusernamelen < ib->leapusernamelen) return -1;
if(memcmp(ia->leaprequest, ib->leaprequest, LEAPREQ_LEN_MAX) > 0) return 1;
else if(memcmp(ia->leaprequest, ib->leaprequest, LEAPREQ_LEN_MAX) < 0) return -1;
if(memcmp(ia->leapresponse, ib->leapresponse, LEAPRESP_LEN_MAX) > 0) return 1;
else if(memcmp(ia->leapresponse, ib->leapresponse, LEAPRESP_LEN_MAX) < 0) return -1;
else if(memcmp(ia->leapusername, ib->leapusername, ia->leapusernamelen) < 0) return -1;
if(memcmp(ia->leapusername, ib->leapusername, ia->leapusernamelen) > 0) return 1;
else if(memcmp(ia->leapusername, ib->leapusername, ia->leapusernamelen) < 0) return -1;
cmp = memcmp(ia->leaprequest, ib->leaprequest, LEAPREQ_LEN_MAX);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
cmp = memcmp(ia->leapresponse, ib->leapresponse, LEAPRESP_LEN_MAX);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
cmp = memcmp(ia->leapusername, ib->leapusername, ia->leapusernamelen);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
return 0;
}
/*===========================================================================*/
Expand Down Expand Up @@ -507,18 +536,21 @@ static int sort_eapmschapv2hashlist_by_id(const void *a, const void *b)
{
const eapmschapv2hashlist_t *ia = (const eapmschapv2hashlist_t *)a;
const eapmschapv2hashlist_t *ib = (const eapmschapv2hashlist_t *)b;
int cmp;

if(ia->id < ib->id) return 1;
else if(ia->id > ib->id) return -1;
if(ia->mschapv2usernamelen > ib->mschapv2usernamelen) return 1;
if(ia->mschapv2usernamelen < ib->mschapv2usernamelen) return -1;
if(memcmp(ia->mschapv2request, ib->mschapv2request, MSCHAPV2REQ_LEN_MAX) > 0) return 1;
else if(memcmp(ia->mschapv2request, ib->mschapv2request, MSCHAPV2REQ_LEN_MAX) < 0) return -1;
if(memcmp(ia->mschapv2response, ib->mschapv2response, MSCHAPV2RESP_LEN_MAX) > 0) return 1;
else if(memcmp(ia->mschapv2response, ib->mschapv2response, MSCHAPV2RESP_LEN_MAX) < 0) return -1;
else if(memcmp(ia->mschapv2username, ib->mschapv2username, ia->mschapv2usernamelen) < 0) return -1;
if(memcmp(ia->mschapv2username, ib->mschapv2username, ia->mschapv2usernamelen) > 0) return 1;
else if(memcmp(ia->mschapv2username, ib->mschapv2username, ia->mschapv2usernamelen) < 0) return -1;
cmp = memcmp(ia->mschapv2request, ib->mschapv2request, MSCHAPV2REQ_LEN_MAX);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
cmp = memcmp(ia->mschapv2response, ib->mschapv2response, MSCHAPV2RESP_LEN_MAX);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
cmp = memcmp(ia->mschapv2username, ib->mschapv2username, ia->mschapv2usernamelen);
if(cmp > 0) return 1;
else if(cmp < 0) return -1;
return 0;
}
/*===========================================================================*/
Expand Down
14 changes: 10 additions & 4 deletions include/hcxpsktool.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,16 @@ static int sort_apessidlist_by_ap(const void *a, const void *b)
{
const apessidl_t *ia = (const apessidl_t *)a;
const apessidl_t *ib = (const apessidl_t *)b;
int cmp;

if(ia->macaddr > ib->macaddr)
return 1;
if(ia->macaddr < ib->macaddr)
return -1;
if(memcmp(ia->essid, ib->essid, ESSID_LEN_MAX) > 0)
cmp = memcmp(ia->essid, ib->essid, ESSID_LEN_MAX);
if(cmp > 0)
return 1;
else if(memcmp(ia->essid, ib->essid, ESSID_LEN_MAX) < 0)
else if(cmp < 0)
return -1;

return 0;
Expand All @@ -68,9 +71,12 @@ static int sort_apessidlist_by_essid(const void *a, const void *b)
{
const apessidl_t *ia = (const apessidl_t *)a;
const apessidl_t *ib = (const apessidl_t *)b;
if(memcmp(ia->essid, ib->essid, ESSID_LEN_MAX) > 0)
int cmp;

cmp = memcmp(ia->essid, ib->essid, ESSID_LEN_MAX);
if(cmp > 0)
return 1;
else if(memcmp(ia->essid, ib->essid, ESSID_LEN_MAX) < 0)
else if(cmp < 0)
return -1;
if(ia->macaddr > ib->macaddr)
return 1;
Expand Down

0 comments on commit 3b38aaf

Please sign in to comment.