quvi: fix crashes on calls to quvi functions

When a function returns a char*, it is necessary to tell it to ctypes,
instead it returns an integer. On a 64 bits CPU, pointers can overflow the
integer, and result to an unvalid pointer given to c_char_p.
This commit is contained in:
Romain Bignon 2013-09-08 19:09:32 +02:00
commit d961459349
2 changed files with 8 additions and 3 deletions

View file

@ -103,6 +103,9 @@ class QuviVideo(BaseVideo):
if _id.startswith('http'):
return _id
if not '.' in _id:
raise UserError('Please give an ID in form WEBSITE.ID (for example youtube.BaW_jenozKc). Supported websites are: %s' % ', '.join(cls.BACKENDS.keys()))
sub_backend, sub_id = _id.split('.', 1)
try:
return cls.BACKENDS[sub_backend] % sub_id

View file

@ -64,7 +64,8 @@ class LibQuvi04(object):
if self.lib is None:
return False
version_str = c_char_p(self.lib.quvi_version(self.QUVI_VERSION)).value
self.lib.quvi_version.restype = c_char_p
version_str = self.lib.quvi_version(self.QUVI_VERSION)
if version_str.startswith('v0.4'):
return True
else:
@ -108,8 +109,9 @@ class LibQuvi04(object):
def _assert_ok(self, status):
if status != self.QUVI_OK:
c_msg = c_char_p(self.lib.quvi_strerror(self.qh, status))
raise QuviError(c_msg.value)
self.lib.quvi_strerror.restype = c_char_p
c_msg = self.lib.quvi_strerror(self.qh, status)
raise QuviError(c_msg)
def _get_str(self, prop):
c_value = c_char_p()