summaryrefslogtreecommitdiffstats
path: root/libass/ass_utils.h
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-11-16 17:23:12 +0100
committerwm4 <wm4@nowhere>2014-11-16 17:23:12 +0100
commit045f646ab3b076002aef5e24b3e51713f40492cc (patch)
tree9442b701aa1e56cf6ed3a45607a4715943b71f08 /libass/ass_utils.h
parent5d654cff0a2e27e1610ba2356efa703dcdfd297f (diff)
downloadlibass-045f646ab3b076002aef5e24b3e51713f40492cc.tar.bz2
libass-045f646ab3b076002aef5e24b3e51713f40492cc.tar.xz
Check bitmap allocation for overflows
This actually fixes #146. The overflow check itself is obvious. Also, make ass_align() return an unaligned value if aligning it would overflow. This is probably better, as it for example makes the overflow check in the caller simpler.
Diffstat (limited to 'libass/ass_utils.h')
-rw-r--r--libass/ass_utils.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/libass/ass_utils.h b/libass/ass_utils.h
index 5055e88..1ce451c 100644
--- a/libass/ass_utils.h
+++ b/libass/ass_utils.h
@@ -98,6 +98,8 @@ double ass_strtod(const char *string, char **endPtr);
static inline size_t ass_align(size_t alignment, size_t s)
{
+ if (s > SIZE_MAX - (alignment - 1))
+ return s;
return (s + (alignment - 1)) & ~(alignment - 1);
}