version 1.13, 2015/02/14 07:56:31 |
version 1.14, 2015/02/14 08:07:39 |
Line 89 ffs_appleufs_validate(const char *name, |
|
Line 89 ffs_appleufs_validate(const char *name, |
|
return EINVAL; |
return EINVAL; |
|
|
*n = *o; |
*n = *o; |
n->ul_checksum = 0; |
|
n->ul_checksum = ffs_appleufs_cksum(n); |
n->ul_checksum = ffs_appleufs_cksum(n); |
if (n->ul_checksum != o->ul_checksum) { |
|
#if defined(DIAGNOSTIC) || !defined(_KERNEL) |
|
printf("%s: invalid APPLE UFS checksum. found 0x%x, expecting 0x%x", |
|
name, o->ul_checksum, n->ul_checksum); |
|
#endif |
|
return EINVAL; |
|
} |
|
n->ul_magic = be32toh(o->ul_magic); |
n->ul_magic = be32toh(o->ul_magic); |
n->ul_version = be32toh(o->ul_version); |
n->ul_version = be32toh(o->ul_version); |
n->ul_time = be32toh(o->ul_time); |
n->ul_time = be32toh(o->ul_time); |
n->ul_namelen = be16toh(o->ul_namelen); |
n->ul_namelen = be16toh(o->ul_namelen); |
|
|
if (n->ul_namelen > APPLEUFS_MAX_LABEL_NAME) { |
if (n->ul_checksum != o->ul_checksum) |
#if defined(DIAGNOSTIC) || !defined(_KERNEL) |
return EINVAL; |
printf("%s: APPLE UFS label name too long, truncated.\n", |
if (n->ul_namelen == 0) |
name); |
return EINVAL; |
#endif |
if (n->ul_namelen > APPLEUFS_MAX_LABEL_NAME) |
n->ul_namelen = APPLEUFS_MAX_LABEL_NAME; |
n->ul_namelen = APPLEUFS_MAX_LABEL_NAME; |
} |
|
/* if len is max, will set ul_unused1 */ |
|
n->ul_name[n->ul_namelen - 1] = '\0'; |
n->ul_name[n->ul_namelen - 1] = '\0'; |
|
|
#ifdef DEBUG |
#ifdef DEBUG |