On Wed, Apr 2, 2014 at 11:26 PM, Jonathan Gray <j...@jsg.id.au> wrote: > On Wed, Apr 02, 2014 at 11:09:09PM -0700, Matt Turner wrote: >> On Wed, Apr 2, 2014 at 10:22 PM, Jonathan Gray <j...@jsg.id.au> wrote: >> > Don't hardcode /dev/dri/card0 but instead use the drm >> > macros which allows the correct /dev/drm0 device to be >> > opened on OpenBSD. >> > >> > v2: use snprintf and fallback to /dev/dri/card0 >> > v3: check for snprintf truncation >> > >> > Signed-off-by: Jonathan Gray <j...@jsg.id.au> >> > --- >> > src/egl/drivers/dri2/platform_drm.c | 7 ++++++- >> > 1 file changed, 6 insertions(+), 1 deletion(-) >> > >> > diff --git a/src/egl/drivers/dri2/platform_drm.c >> > b/src/egl/drivers/dri2/platform_drm.c >> > index 2f7edb9..9a7633a 100644 >> > --- a/src/egl/drivers/dri2/platform_drm.c >> > +++ b/src/egl/drivers/dri2/platform_drm.c >> > @@ -492,7 +492,12 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay >> > *disp) >> > >> > gbm = disp->PlatformDisplay; >> > if (gbm == NULL) { >> > - fd = open("/dev/dri/card0", O_RDWR); >> > + char buf[64]; >> > + int n = snprintf(buf, sizeof(buf), DRM_DEV_NAME, DRM_DIR_NAME, 0); >> > + if (n != -1 && n < sizeof(buf)) >> >> n <= sizeof(buf), right? snprintf writes up to sizeof(buf) bytes, >> including the nul character. >> >> With that fixed, >> >> Reviewed-by: Matt Turner <matts...@gmail.com> > > No, see the description from the manual page: > > http://www.openbsd.org/cgi-bin/man.cgi?query=snprintf&sektion=3&format=html > > snprintf() and vsnprintf() will write at most size-1 of the characters > printed into the output string (the size'th character then gets the > terminating `\0'); if the return value is greater than or equal to the > size argument, the string was too short and some of the printed > characters were discarded. > > So n == sizeof(buf) is a truncation.
Yep, you're right. Reviewed-by: Matt Turner <matts...@gmail.com> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev