UBIFS: use snprintf instead of sprintf when printing keys
Switch to 'snprintf()' which is more secure and reliable. This is also a preparation to the subsequent key printing fixes. Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
This commit is contained in:
parent
d34315da91
commit
beba006074
|
@ -103,8 +103,8 @@ static const char *get_dent_type(int type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sprintf_key(const struct ubifs_info *c, const union ubifs_key *key,
|
static void snprintf_key(const struct ubifs_info *c, const union ubifs_key *key,
|
||||||
char *buffer)
|
char *buffer, int len)
|
||||||
{
|
{
|
||||||
char *p = buffer;
|
char *p = buffer;
|
||||||
int type = key_type(c, key);
|
int type = key_type(c, key);
|
||||||
|
@ -112,44 +112,46 @@ static void sprintf_key(const struct ubifs_info *c, const union ubifs_key *key,
|
||||||
if (c->key_fmt == UBIFS_SIMPLE_KEY_FMT) {
|
if (c->key_fmt == UBIFS_SIMPLE_KEY_FMT) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case UBIFS_INO_KEY:
|
case UBIFS_INO_KEY:
|
||||||
sprintf(p, "(%lu, %s)", (unsigned long)key_inum(c, key),
|
len -= snprintf(p, len, "(%lu, %s)",
|
||||||
get_key_type(type));
|
(unsigned long)key_inum(c, key),
|
||||||
|
get_key_type(type));
|
||||||
break;
|
break;
|
||||||
case UBIFS_DENT_KEY:
|
case UBIFS_DENT_KEY:
|
||||||
case UBIFS_XENT_KEY:
|
case UBIFS_XENT_KEY:
|
||||||
sprintf(p, "(%lu, %s, %#08x)",
|
len -= snprintf(p, len, "(%lu, %s, %#08x)",
|
||||||
(unsigned long)key_inum(c, key),
|
(unsigned long)key_inum(c, key),
|
||||||
get_key_type(type), key_hash(c, key));
|
get_key_type(type), key_hash(c, key));
|
||||||
break;
|
break;
|
||||||
case UBIFS_DATA_KEY:
|
case UBIFS_DATA_KEY:
|
||||||
sprintf(p, "(%lu, %s, %u)",
|
len -= snprintf(p, len, "(%lu, %s, %u)",
|
||||||
(unsigned long)key_inum(c, key),
|
(unsigned long)key_inum(c, key),
|
||||||
get_key_type(type), key_block(c, key));
|
get_key_type(type), key_block(c, key));
|
||||||
break;
|
break;
|
||||||
case UBIFS_TRUN_KEY:
|
case UBIFS_TRUN_KEY:
|
||||||
sprintf(p, "(%lu, %s)",
|
len -= snprintf(p, len, "(%lu, %s)",
|
||||||
(unsigned long)key_inum(c, key),
|
(unsigned long)key_inum(c, key),
|
||||||
get_key_type(type));
|
get_key_type(type));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
sprintf(p, "(bad key type: %#08x, %#08x)",
|
len -= snprintf(p, len, "(bad key type: %#08x, %#08x)",
|
||||||
key->u32[0], key->u32[1]);
|
key->u32[0], key->u32[1]);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
sprintf(p, "bad key format %d", c->key_fmt);
|
len -= snprintf(p, len, "bad key format %d", c->key_fmt);
|
||||||
|
ubifs_assert(len > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *dbg_key_str0(const struct ubifs_info *c, const union ubifs_key *key)
|
const char *dbg_key_str0(const struct ubifs_info *c, const union ubifs_key *key)
|
||||||
{
|
{
|
||||||
/* dbg_lock must be held */
|
/* dbg_lock must be held */
|
||||||
sprintf_key(c, key, dbg_key_buf0);
|
snprintf_key(c, key, dbg_key_buf0, sizeof(dbg_key_buf0) - 1);
|
||||||
return dbg_key_buf0;
|
return dbg_key_buf0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *dbg_key_str1(const struct ubifs_info *c, const union ubifs_key *key)
|
const char *dbg_key_str1(const struct ubifs_info *c, const union ubifs_key *key)
|
||||||
{
|
{
|
||||||
/* dbg_lock must be held */
|
/* dbg_lock must be held */
|
||||||
sprintf_key(c, key, dbg_key_buf1);
|
snprintf_key(c, key, dbg_key_buf1, sizeof(dbg_key_buf1) - 1);
|
||||||
return dbg_key_buf1;
|
return dbg_key_buf1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue