[Mesa-dev] [PATCH v3] egl/dri2: use drm macros to construct device name
Matt Turner
mattst88 at gmail.com
Thu Apr 3 10:11:40 PDT 2014
On Wed, Apr 2, 2014 at 11:26 PM, Jonathan Gray <jsg at 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 <jsg at 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 <jsg at 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 <mattst88 at 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 <mattst88 at gmail.com>
More information about the mesa-dev
mailing list