Ignore:
Timestamp:
2025-06-28T22:52:18Z (9 months ago)
Author:
Miroslav Cimerman <mc@…>
Children:
9c9955ab
Parents:
2192a01
Message:

hr: metadata: validate magic early in decode

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/bd/hr/metadata/foreign/geom/hr_g_stripe.c

    r2192a01 r0dbd4a9  
    6060static errno_t meta_gstripe_get_block(service_id_t, void **);
    6161/* static errno_t meta_gstripe_write_block(service_id_t, const void *); */
    62 static bool meta_gstripe_has_valid_magic(const void *);
    6362
    6463static errno_t meta_gstripe_probe(service_id_t, void **);
     
    116115                goto error;
    117116
    118         if (!meta_gstripe_has_valid_magic(metadata_struct)) {
    119                 rc = ENOFS;
    120                 goto error;
    121         }
    122 
    123117        *rmd = metadata_struct;
    124118        return EOK;
     
    126120error:
    127121        free(metadata_struct);
    128         return ENOFS;
     122        return rc;
    129123}
    130124
     
    318312        HR_DEBUG("%s()", __func__);
    319313
    320         stripe_metadata_decode(block, md_v);
     314        struct g_stripe_metadata *md = md_v;
     315
     316        stripe_metadata_decode(block, md);
     317
     318        if (str_lcmp(md->md_magic, G_STRIPE_MAGIC, 16) != 0)
     319                return EINVAL;
    321320
    322321        return EOK;
     
    397396#endif
    398397
    399 static bool meta_gstripe_has_valid_magic(const void *md_v)
    400 {
    401         HR_DEBUG("%s()", __func__);
    402 
    403         const struct g_stripe_metadata *md = md_v;
    404 
    405         if (str_lcmp(md->md_magic, G_STRIPE_MAGIC, 16) != 0)
    406                 return false;
    407 
    408         return true;
    409 }
    410 
    411398/** @}
    412399 */
Note: See TracChangeset for help on using the changeset viewer.