Changeset 5e801dc in mainline for uspace/lib/nic/src


Ignore:
Timestamp:
2019-02-25T14:42:38Z (6 years ago)
Author:
GitHub <noreply@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a4e78743
Parents:
ee8d4d6
git-author:
Jiří Zárevúcky <zarevucky.jiri@…> (2019-02-25 14:42:38)
git-committer:
GitHub <noreply@…> (2019-02-25 14:42:38)
Message:

Indicate and enforce constness of hash table key in certain functions (#158)

The assumption here is that modifying key in the hash/equal functions in something completely unexpected, and not something you would ever want to do intentionally, so it makes sense to disallow it entirely to get that extra level of checking.

Location:
uspace/lib/nic/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/nic/src/nic_addr_db.c

    ree8d4d6 r5e801dc  
    6262} addr_key_t;
    6363
    64 static bool nic_addr_key_equal(void *key_arg, const ht_link_t *item)
    65 {
    66         addr_key_t *key = (addr_key_t *)key_arg;
     64static bool nic_addr_key_equal(const void *key_arg, const ht_link_t *item)
     65{
     66        const addr_key_t *key = key_arg;
    6767        nic_addr_entry_t *entry = member_to_inst(item, nic_addr_entry_t, link);
    6868
     
    8181}
    8282
    83 static size_t nic_addr_key_hash(void *k)
    84 {
    85         addr_key_t *key = (addr_key_t *)k;
     83static size_t nic_addr_key_hash(const void *k)
     84{
     85        const addr_key_t *key = k;
    8686        return addr_hash(key->len, key->addr);
    8787}
  • uspace/lib/nic/src/nic_wol_virtues.c

    ree8d4d6 r5e801dc  
    4545 */
    4646
    47 static size_t nic_wv_key_hash(void *key)
    48 {
    49         return *(nic_wv_id_t *) key;
     47static size_t nic_wv_key_hash(const void *key)
     48{
     49        const nic_wv_id_t *k = key;
     50        return *k;
    5051}
    5152
     
    5657}
    5758
    58 static bool nic_wv_key_equal(void *key, const ht_link_t *item)
    59 {
    60         nic_wol_virtue_t *virtue = (nic_wol_virtue_t *) item;
    61         return (virtue->id == *(nic_wv_id_t *) key);
     59static bool nic_wv_key_equal(const void *key, const ht_link_t *item)
     60{
     61        const nic_wv_id_t *k = key;
     62        const nic_wol_virtue_t *virtue = (const nic_wol_virtue_t *) item;
     63        return (virtue->id == *k);
    6264}
    6365
Note: See TracChangeset for help on using the changeset viewer.