diff mbox

[1/4] nfsref: fix a segmentation fault when lookup a junction

Message ID 20140708164716.15173.17257.stgit@seurat.1015granger.net
State Accepted
Headers show

Commit Message

Chuck Lever July 8, 2014, 4:47 p.m. UTC
From: Ditang Chen <chendt.fnst@cn.fujitsu.com>

Can not retrieve FSN with the fsn_uuid when lookup a junction,the entries
is 1 and the 'tmp' pointer to NULL.

# ls -l
total 8
d--------T 2 root root 4096 Jun  4 07:05 s2
# nsdb-list
NSDB: ldap.example.net:389
  NCE ou=fedfs,dc=example,dc=net has no FSN records
# nfsref lookup s2
Segmentation fault

(gdb) bt
#0  0x0000000000404eb0 in nfsref_lookup_resolve_fsn (host=0x118d630, fsn_uuid=<optimized out>) at lookup.c:364
#1  nfsref_lookup_nfs_fedfs (junct_path=<optimized out>) at lookup.c:483
#2  0x0000000000403cf9 in main (argc=3, argv=0x7fff69dea5e8) at nfsref.c:181

Fixes: c02e7770 (libnsdb: Add nsdb_get_fsn())
Signed-off-by: chendt.fnst@cn.fujitsu.com
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
 src/libnsdb/fileserver.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
diff mbox

Patch

diff --git a/src/libnsdb/fileserver.c b/src/libnsdb/fileserver.c
index a96078d15210..d98f97e369c3 100644
--- a/src/libnsdb/fileserver.c
+++ b/src/libnsdb/fileserver.c
@@ -1566,8 +1566,14 @@  nsdb_get_fsn_find_entry_s(nsdb_t host, const char *nce, const char *fsn_uuid,
 	ldap_msgfree(response);
 
 	if (retval == FEDFS_OK) {
-		xlog(D_CALL, "%s: returning fsn", __func__);
-		*fsn = tmp;
+		if (tmp == NULL) {
+			xlog(D_CALL, "%s: No FSN entries for FSN UUID %s",
+				__func__, fsn_uuid);
+			retval = FEDFS_ERR_NSDB_NOFSN;
+		} else {
+			xlog(D_CALL, "%s: returning fsn", __func__);
+			*fsn = tmp;
+		}
 	} else
 		nsdb_free_fedfs_fsn(tmp);
 	return retval;