libbluray | branch: master | hpi1 <[email protected]> | Tue Jan 21 10:29:57 2014 +0200| [92ae519ea509a5b3b1a3df1fbcbe2f6b9827dc7e] | committer: hpi1
registers: check for memory allocation failures > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=92ae519ea509a5b3b1a3df1fbcbe2f6b9827dc7e --- src/libbluray/bluray.c | 9 +++++++-- src/libbluray/register.c | 16 +++++++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c index 03c130a..ef75edb 100644 --- a/src/libbluray/bluray.c +++ b/src/libbluray/bluray.c @@ -1263,6 +1263,13 @@ BLURAY *bd_open(const char* device_path, const char* keyfile_path) return NULL; } + bd->regs = bd_registers_init(); + if (!bd->regs) { + BD_DEBUG(DBG_BLURAY, "bd_registers_init() failed\n"); + X_FREE(bd); + return NULL; + } + bd->device_path = str_dup(device_path); #if (defined HAVE_MNTENT_H || defined __APPLE__) @@ -1271,8 +1278,6 @@ BLURAY *bd_open(const char* device_path, const char* keyfile_path) _libaacs_init(bd, keyfile_path); - bd->regs = bd_registers_init(); - _libbdplus_init(bd); _index_open(bd); diff --git a/src/libbluray/register.c b/src/libbluray/register.c index 43751d4..77b3575 100644 --- a/src/libbluray/register.c +++ b/src/libbluray/register.c @@ -165,9 +165,11 @@ BD_REGISTERS *bd_registers_init(void) { BD_REGISTERS *p = calloc(1, sizeof(BD_REGISTERS)); - memcpy(p->psr, bd_psr_init, sizeof(bd_psr_init)); + if (p) { + memcpy(p->psr, bd_psr_init, sizeof(bd_psr_init)); - bd_mutex_init(&p->mutex); + bd_mutex_init(&p->mutex); + } return p; } @@ -218,9 +220,13 @@ void bd_psr_register_cb (BD_REGISTERS *p, void (*callback)(void*,BD_PSR_EVENT*) p->num_cb++; p->cb = realloc(p->cb, p->num_cb * sizeof(PSR_CB_DATA)); - - p->cb[p->num_cb - 1].cb = callback; - p->cb[p->num_cb - 1].handle = cb_handle; + if (p->cb) { + p->cb[p->num_cb - 1].cb = callback; + p->cb[p->num_cb - 1].handle = cb_handle; + } else { + BD_DEBUG(DBG_BLURAY|DBG_CRIT, "bd_psr_register_cb(): realloc failed\n"); + p->num_cb = 0; + } bd_psr_unlock(p); } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
