Message ID | 20180907213324.242732-1-ebiggers@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ima: fix showing large 'violations' or 'runtime_measurements_count' | expand |
On Fri, 2018-09-07 at 14:33 -0700, Eric Biggers wrote: > From: Eric Biggers <ebiggers@google.com> > > The 12 character temporary buffer is not necessarily long enough to hold > a 'long' value. Increase it > Signed-off-by: Eric Biggers <ebiggers@google.com> > --- > security/integrity/ima/ima_fs.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/security/integrity/ima/ima_fs.c b/security/integrity/ima/ima_fs.c > index fe0ede883557..9e239b1dea2f 100644 > --- a/security/integrity/ima/ima_fs.c > +++ b/security/integrity/ima/ima_fs.c > @@ -42,14 +42,14 @@ static int __init default_canonical_fmt_setup(char *str) > __setup("ima_canonical_fmt", default_canonical_fmt_setup); > > static int valid_policy = 1; > -#define TMPBUFLEN 12 > + > static ssize_t ima_show_htable_value(char __user *buf, size_t count, > loff_t *ppos, atomic_long_t *val) > { > - char tmpbuf[TMPBUFLEN]; > + char tmpbuf[32]; The maximum string size needed to represent a long is not 32, even on a 64 bit system. 32 bytes is fine, but please comment this. > ssize_t len; > > - len = scnprintf(tmpbuf, TMPBUFLEN, "%li\n", atomic_long_read(val)); > + len = scnprintf(tmpbuf, sizeof(tmpbuf), "%li\n", atomic_long_read(val)); > return simple_read_from_buffer(buf, count, ppos, tmpbuf, len); > } >
diff --git a/security/integrity/ima/ima_fs.c b/security/integrity/ima/ima_fs.c index fe0ede883557..9e239b1dea2f 100644 --- a/security/integrity/ima/ima_fs.c +++ b/security/integrity/ima/ima_fs.c @@ -42,14 +42,14 @@ static int __init default_canonical_fmt_setup(char *str) __setup("ima_canonical_fmt", default_canonical_fmt_setup); static int valid_policy = 1; -#define TMPBUFLEN 12 + static ssize_t ima_show_htable_value(char __user *buf, size_t count, loff_t *ppos, atomic_long_t *val) { - char tmpbuf[TMPBUFLEN]; + char tmpbuf[32]; ssize_t len; - len = scnprintf(tmpbuf, TMPBUFLEN, "%li\n", atomic_long_read(val)); + len = scnprintf(tmpbuf, sizeof(tmpbuf), "%li\n", atomic_long_read(val)); return simple_read_from_buffer(buf, count, ppos, tmpbuf, len); }