From 0c6fb520dc0c88bf39a1859ff9aa6d8ab1db70d5 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Fri, 14 Jan 2011 16:57:33 -0800 Subject: [PATCH] cfuse: fix crash when bad address provided --- src/cfuse.cc | 11 ++++++++++- src/mon/MonClient.cc | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/cfuse.cc b/src/cfuse.cc index c8f5e43625184..f6155df0d993d 100644 --- a/src/cfuse.cc +++ b/src/cfuse.cc @@ -38,6 +38,11 @@ using namespace std; #include #include +void usage() +{ + cerr << "usage: cfuse [-m mon-ip-addr:mon-port] " << std::endl; +} + int main(int argc, const char **argv, const char *envp[]) { //cerr << "cfuse starting " << myrank << "/" << world << std::endl; @@ -68,7 +73,11 @@ int main(int argc, const char **argv, const char *envp[]) { // get monmap MonClient mc; - if (mc.build_initial_monmap() < 0) + int ret = mc.build_initial_monmap(); + if (ret == -EINVAL) + usage(); + + if (ret < 0) return -1; // start up network diff --git a/src/mon/MonClient.cc b/src/mon/MonClient.cc index 78988148493a3..c5243eafbf3b5 100644 --- a/src/mon/MonClient.cc +++ b/src/mon/MonClient.cc @@ -83,6 +83,8 @@ int MonClient::build_initial_monmap() strcpy(old_addrs, g_conf.mon_host); hosts = mount_resolve_dest(old_addrs); delete [] old_addrs; + if (!hosts) + return -EINVAL; bool success = parse_ip_port_vec(hosts, addrs); free(hosts); if (success) { -- 2.39.5