Verify if we can actually read the data at given offset.

Reported by:	Martin <nakal@nurfuerspam.de>
This commit is contained in:
Pawel Jakub Dawidek 2005-08-23 18:55:38 +00:00
parent b192b1d38e
commit a180109fa3
2 changed files with 13 additions and 6 deletions

View File

@ -58,6 +58,9 @@ g_label_ext2fs_taste(struct g_consumer *cp, char *label, size_t size)
pp = cp->provider; pp = cp->provider;
label[0] = '\0'; label[0] = '\0';
if ((EXT2FS_SB_OFFSET % pp->sectorsize) != 0)
return;
fs = (e2sb_t *)g_read_data(cp, EXT2FS_SB_OFFSET, pp->sectorsize, NULL); fs = (e2sb_t *)g_read_data(cp, EXT2FS_SB_OFFSET, pp->sectorsize, NULL);
if (fs == NULL) if (fs == NULL)
return; return;

View File

@ -49,11 +49,17 @@ typedef struct resiserfs_sb {
} reiserfs_sb_t; } reiserfs_sb_t;
static reiserfs_sb_t * static reiserfs_sb_t *
g_label_reiserfs_read_super(struct g_consumer *cp, off_t offset, off_t len) g_label_reiserfs_read_super(struct g_consumer *cp, off_t offset)
{ {
reiserfs_sb_t *fs; reiserfs_sb_t *fs;
u_int secsize;
fs = (reiserfs_sb_t *)g_read_data(cp, offset, len, NULL); secsize = cp->provider->sectorsize;
if ((offset % secsize) != 0)
return (NULL);
fs = (reiserfs_sb_t *)g_read_data(cp, offset, secsize, NULL);
if (fs == NULL) if (fs == NULL)
return (NULL); return (NULL);
@ -77,12 +83,10 @@ g_label_reiserfs_taste(struct g_consumer *cp, char *label, size_t size)
label[0] = '\0'; label[0] = '\0';
/* Try old format */ /* Try old format */
fs = g_label_reiserfs_read_super(cp, REISERFS_OLD_DISK_OFFSET, fs = g_label_reiserfs_read_super(cp, REISERFS_OLD_DISK_OFFSET);
pp->sectorsize);
if (fs == NULL) { if (fs == NULL) {
/* Try new format */ /* Try new format */
fs = g_label_reiserfs_read_super(cp, REISERFS_NEW_DISK_OFFSET, fs = g_label_reiserfs_read_super(cp, REISERFS_NEW_DISK_OFFSET);
pp->sectorsize);
} }
if (fs == NULL) if (fs == NULL)
return; return;