libaacs | branch: master | npzacs <[email protected]> | Wed Apr 25 13:18:29 2012 +0300| [2deaa026341ee06a6b42b065f80b32140deb7504] | committer: npzacs
Return error code from mmc_read_vid() > http://git.videolan.org/gitweb.cgi/libaacs.git/?a=commit;h=2deaa026341ee06a6b42b065f80b32140deb7504 --- src/libaacs/aacs.c | 3 ++- src/libaacs/mmc.c | 8 +++++--- src/libaacs/mmc.h | 4 ++++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/libaacs/aacs.c b/src/libaacs/aacs.c index 69f6711..f4d3a0d 100644 --- a/src/libaacs/aacs.c +++ b/src/libaacs/aacs.c @@ -184,7 +184,8 @@ static int _read_vid(AACS *aacs, const char *path) DEBUG(DBG_AACS, "Trying host certificate (id 0x%s)...\n", print_hex(tmp_str, cert + 4, 6)); - if (mmc_read_vid(mmc, priv_key, cert, aacs->vid)) { + int mmc_result = mmc_read_vid(mmc, priv_key, cert, aacs->vid); + if (mmc_result == MMC_SUCCESS) { mmc_close(mmc); return 1; } diff --git a/src/libaacs/mmc.c b/src/libaacs/mmc.c index 7c48d6f..b32f912 100644 --- a/src/libaacs/mmc.c +++ b/src/libaacs/mmc.c @@ -517,6 +517,7 @@ int mmc_read_vid(MMC *mmc, const uint8_t *host_priv_key, const uint8_t *host_cer { uint8_t agid = 0, hks[40], dn[20], dc[92], dkp[40], dks[40], mac[16]; char str[512]; + int error_code = MMC_ERROR; memset(hks, 0, sizeof(hks)); @@ -526,7 +527,7 @@ int mmc_read_vid(MMC *mmc, const uint8_t *host_priv_key, const uint8_t *host_cer if (!_mmc_report_agid(mmc, &agid)) { DEBUG(DBG_MMC | DBG_CRIT, "Didn't get AGID from drive (%p)\n", mmc); - return 0; + return MMC_ERROR; } DEBUG(DBG_MMC, "Got AGID from drive: %d (%p)\n", agid, mmc); @@ -542,6 +543,7 @@ int mmc_read_vid(MMC *mmc, const uint8_t *host_priv_key, const uint8_t *host_cer DEBUG(DBG_MMC | DBG_CRIT, "Host key / Certificate has been revoked by your drive ? " "(%p)\n", mmc); + error_code = MMC_ERROR_CERT_REVOKED; break; } @@ -608,12 +610,12 @@ int mmc_read_vid(MMC *mmc, const uint8_t *host_priv_key, const uint8_t *host_cer _mmc_invalidate_agid(mmc, agid); - return 1; + return MMC_SUCCESS; } DEBUG(DBG_MMC | DBG_CRIT, "Unable to read VID from drive! (%p)\n", mmc); _mmc_invalidate_agid(mmc, agid); - return 0; + return error_code; } diff --git a/src/libaacs/mmc.h b/src/libaacs/mmc.h index 028babd..18b1727 100644 --- a/src/libaacs/mmc.h +++ b/src/libaacs/mmc.h @@ -26,6 +26,10 @@ typedef struct mmc MMC; +#define MMC_SUCCESS 0 /* no errors */ +#define MMC_ERROR -1 /* MMC failed */ +#define MMC_ERROR_CERT_REVOKED -2 /* revoked certificate */ + AACS_PRIVATE MMC *mmc_open(const char *path); AACS_PRIVATE void mmc_close(MMC *mmc); AACS_PRIVATE int mmc_read_vid(MMC *mmc, const uint8_t *host_priv_key, const uint8_t *host_cert, _______________________________________________ libaacs-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libaacs-devel
