From: Chuck Lever Date: Fri, 16 Apr 2010 17:03:20 +0000 (-0400) Subject: libexport.a: export_find() should handle address parsing errors X-Git-Tag: nfs-utils-1-2-3-rc2~7 X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=470448e77bd673b206cf40820f966dcb8f029f27;p=nfs-utils.git libexport.a: export_find() should handle address parsing errors An address mask parsing error can cause client_init(), and therefore client_dup(), to make our process exit suddenly. Soon we want to add more complex address parsing in client_init(), so we need this interface to be a little more robust. Since export_find() can return NULL in some cases, it can handle NULL returns from its subroutines if an address parsing error occurs, or if memory is exhausted. Allow for client_dup() to return NULL instead of exiting sideways. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson --- diff --git a/support/export/export.c b/support/export/export.c index ddc8a84..3e4da69 100644 --- a/support/export/export.c +++ b/support/export/export.c @@ -129,6 +129,10 @@ export_dup(nfs_export *exp, struct hostent *hp) if (exp->m_export.e_hostname) new->m_export.e_hostname = xstrdup(exp->m_export.e_hostname); clp = client_dup(exp->m_client, hp); + if (clp == NULL) { + export_free(new); + return NULL; + } clp->m_count++; new->m_client = clp; new->m_mayexport = exp->m_mayexport;