From ef84cfa6e28a2648d70c1b7fff06b65c6b87471a Mon Sep 17 00:00:00 2001 From: Tom Counihan Date: Tue, 27 Jul 2010 12:28:04 +0100 Subject: [PATCH] obexd: Fix de-registering PBAP drivers on init failure scenarios Unwind the driver registration/phonebook initialization stack on pbap plugin init failure scenarios. --- obexd/plugins/pbap.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/obexd/plugins/pbap.c b/obexd/plugins/pbap.c index af4b45269..2d3bebd17 100644 --- a/obexd/plugins/pbap.c +++ b/obexd/plugins/pbap.c @@ -892,21 +892,36 @@ static int pbap_init(void) err = phonebook_init(); if (err < 0) - return err; + goto fail_pb_init; err = obex_mime_type_driver_register(&mime_pull); if (err < 0) - return err; + goto fail_mime_pull; err = obex_mime_type_driver_register(&mime_list); if (err < 0) - return err; + goto fail_mime_list; err = obex_mime_type_driver_register(&mime_vcard); if (err < 0) - return err; + goto fail_mime_vcard; + + err = obex_service_driver_register(&pbap); + if (err < 0) + goto fail_pbap_reg; - return obex_service_driver_register(&pbap); + return 0; + +fail_pbap_reg: + obex_mime_type_driver_unregister(&mime_vcard); +fail_mime_vcard: + obex_mime_type_driver_unregister(&mime_list); +fail_mime_list: + obex_mime_type_driver_unregister(&mime_pull); +fail_mime_pull: + phonebook_exit(); +fail_pb_init: + return err; } static void pbap_exit(void) -- 2.47.3