Coverage Report

Created: 2025-06-13 06:36

/src/util-linux/libblkid/src/superblocks/lsi_raid.c
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright (C) 2008 Karel Zak <kzak@redhat.com>
3
 *
4
 * Inspired by libvolume_id by
5
 *     Kay Sievers <kay.sievers@vrfy.org>
6
 *
7
 * This file may be redistributed under the terms of the
8
 * GNU Lesser General Public License.
9
 */
10
11
#include <stdio.h>
12
#include <stdlib.h>
13
#include <unistd.h>
14
#include <string.h>
15
#include <stdint.h>
16
17
#include "superblocks.h"
18
19
struct lsi_metadata {
20
  uint8_t   sig[6];
21
};
22
23
24
13.2k
#define LSI_SIGNATURE   "$XIDE$"
25
26
static int probe_lsiraid(blkid_probe pr,
27
    const struct blkid_idmag *mag __attribute__((__unused__)))
28
6.60k
{
29
6.60k
  uint64_t off;
30
6.60k
  struct lsi_metadata *lsi;
31
32
6.60k
  if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
33
0
    return 1;
34
35
6.60k
  off = ((pr->size / 0x200) - 1) * 0x200;
36
6.60k
  lsi = (struct lsi_metadata *)
37
6.60k
    blkid_probe_get_buffer(pr,
38
6.60k
        off,
39
6.60k
        sizeof(struct lsi_metadata));
40
6.60k
  if (!lsi)
41
0
    return errno ? -errno : 1;
42
43
6.60k
  if (memcmp(lsi->sig, LSI_SIGNATURE, sizeof(LSI_SIGNATURE)-1) != 0)
44
6.60k
    return 1;
45
0
  if (blkid_probe_set_magic(pr, off, sizeof(lsi->sig),
46
0
        (unsigned char *) lsi->sig))
47
0
    return 1;
48
0
  return 0;
49
0
}
50
51
const struct blkid_idinfo lsiraid_idinfo = {
52
  .name   = "lsi_mega_raid_member",
53
  .usage    = BLKID_USAGE_RAID,
54
  .minsz    = 0x10000,
55
  .probefunc  = probe_lsiraid,
56
  .magics   = BLKID_NONE_MAGIC
57
};
58
59