Petri Hintukainen pushed to branch master at VideoLAN / libaacs
Commits:
e3e53062 by hpi1 at 2020-07-06T17:20:56+03:00
Increase error loglevel
- - - - -
5f58595f by hpi1 at 2020-07-06T17:22:40+03:00
mmc_device_darwin: Attempt to fix #6 (segfault in close() after failed open())
- - - - -
1 changed file:
- src/file/mmc_device_darwin.c
Changes:
=====================================
src/file/mmc_device_darwin.c
=====================================
@@ -371,13 +371,13 @@ static DADissenterRef iokit_mount_approval_cb(DADiskRef
disk, void *context)
static int iokit_da_init(MMCDEV *mmc) {
mmc->session = DASessionCreate(kCFAllocatorDefault);
if (NULL == mmc->session) {
- BD_DEBUG(DBG_MMC, "Could not create a disc arbitration session\n");
+ BD_DEBUG(DBG_MMC | DBG_CRIT, "Could not create a disc arbitration
session\n");
return -1;
}
mmc->disk = DADiskCreateFromBSDName(kCFAllocatorDefault, mmc->session,
mmc->bsd_name);
if (NULL == mmc->disk) {
- BD_DEBUG(DBG_MMC, "Could not create a disc arbitration disc for the
device\n");
+ BD_DEBUG(DBG_MMC | DBG_CRIT, "Could not create a disc arbitration disc
for the device\n");
CFRelease(mmc->session);
mmc->session = NULL;
return -1;
@@ -429,14 +429,14 @@ static int mmc_open_iokit(const char *path, MMCDEV *mmc) {
/* get the bsd name associated with this mount */
rc = get_mounted_device_from_path(mmc, path);
if (0 != rc) {
- BD_DEBUG(DBG_MMC, "Could not locate mounted device associated with
%s\n", path);
+ BD_DEBUG(DBG_MMC | DBG_CRIT, "Could not locate mounted device
associated with %s\n", path);
return rc;
}
/* find a matching io service (IOBDServices) */
rc = iokit_find_service_matching(mmc, &service);
if (0 != rc) {
- BD_DEBUG(DBG_MMC, "Could not find matching IOBDServices mounted @
%s\n", path);
+ BD_DEBUG(DBG_MMC | DBG_CRIT, "Could not find matching IOBDServices
mounted @ %s\n", path);
return rc;
}
@@ -463,7 +463,7 @@ static int mmc_open_iokit(const char *path, MMCDEV *mmc) {
/* finally, obtain exclusive access */
rc = (*mmc->taskInterface)->ObtainExclusiveAccess(mmc->taskInterface);
if (kIOReturnSuccess != rc) {
- BD_DEBUG(DBG_MMC, "Failed to obtain exclusive access. rc = %x\n", rc);
+ BD_DEBUG(DBG_MMC | DBG_CRIT, "Failed to obtain exclusive access. rc =
%x\n", rc);
return -1;
}
@@ -533,6 +533,12 @@ void device_close(MMCDEV **pp)
IODestroyPlugInInterface(mmc->plugInInterface);
}
+ if (!mmc->sync_sem) {
+ /* open failed before iokit_da_init() */
+ X_FREE(*pp);
+ return;
+ }
+
/* Wait for disc to re-appear for 20 seconds.
* This timeout was figured out by experimentation with
* a USB BD drive which sometimes can take really long to
View it on GitLab:
https://code.videolan.org/videolan/libaacs/-/compare/a2703d885b2dfed2f5bbae999070ad9f01dc2369...5f58595ff4a19d645c482ded6877e9ac10e23952
--
View it on GitLab:
https://code.videolan.org/videolan/libaacs/-/compare/a2703d885b2dfed2f5bbae999070ad9f01dc2369...5f58595ff4a19d645c482ded6877e9ac10e23952
You're receiving this email because of your account on code.videolan.org.
_______________________________________________
libaacs-devel mailing list
[email protected]
https://mailman.videolan.org/listinfo/libaacs-devel