]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
replace sprintf with snprintf all around
authorYehuda Sadeh <yehuda@hq.newdream.net>
Fri, 15 Jan 2010 00:07:39 +0000 (16:07 -0800)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Fri, 15 Jan 2010 00:11:51 +0000 (16:11 -0800)
Also pass buffer size to relevant functions when required.

33 files changed:
src/client/Client.cc
src/client/SyntheticClient.cc
src/client/hypertable/CephBroker.cc
src/cmds.cc
src/cmon.cc
src/common/debug.cc
src/config.cc
src/cosd.cc
src/crushtool.cc
src/ebofs/Ebofs.cc
src/fakefuse.cc
src/fakesyn.cc
src/mds/CInode.cc
src/mds/MDBalancer.cc
src/mds/MDCache.cc
src/mds/MDLog.cc
src/mds/MDS.cc
src/mds/MDSTable.cc
src/mds/Server.cc
src/mds/SessionMap.cc
src/mds/snap.cc
src/mon/MonClient.cc
src/mon/MonitorStore.cc
src/mount/mtab.c
src/msg/FakeMessenger.cc
src/msg/SimpleMessenger.cc
src/os/FileStore.cc
src/os/FileStore.h
src/osd/Ager.cc
src/osd/OSD.cc
src/osd/OSDMap.cc
src/osd/osd_types.h
src/psim.cc

index 6b124952a0cd40db518fbf6b34749d65a04f7db2..9de38063c9cdd225a2978c391e46455025fb202d 100644 (file)
@@ -281,7 +281,7 @@ void Client::init()
     char s[80];
     char hostname[80];
     gethostname(hostname, 79);
-    sprintf(s,"clients.%s.%d", hostname, getpid());
+    snprintf(s, sizeof(s), "clients.%s.%d", hostname, getpid());
     client_logger = new Logger(s, &client_logtype);
   }
   client_logger_lock.Unlock();
@@ -5898,7 +5898,7 @@ int Client::get_file_stripe_address(int fd, loff_t offset, string& address)
   // now we need to turn it into a string
   char foo[30];
   __u8 *quad = (__u8*) &addr.in4_addr().sin_addr;
-  sprintf(foo, "%d.%d.%d.%d", (int)quad[0], (int)quad[1], (int)quad[2], (int)quad[3]);
+  snprintf(foo, sizeof(foo), "%d.%d.%d.%d", (int)quad[0], (int)quad[1], (int)quad[2], (int)quad[3]);
   address = foo;
   return 0;
 }
index 726310f81ae8260776d885d17e5f39344d7f849d..04beb877dba25f766e0b0d2575a3181d8bcd73af 100644 (file)
@@ -295,7 +295,7 @@ string SyntheticClient::get_sarg(int seq)
   }
   if (a.length() == 0 || a == "~") {
     char s[30];
-    sprintf(s,"syn.%lld.%d", (long long)client->whoami.v, seq);
+    snprintf(s, sizeof(s), "syn.%lld.%d", (long long)client->whoami.v, seq);
     a = s;
   } 
   return a;
@@ -765,7 +765,7 @@ int SyntheticClient::run()
        int playdata = iargs.front(); iargs.pop_front();
         string prefix = get_sarg(0);
        char realtfile[100];
-       sprintf(realtfile, tfile.c_str(), (int)client->get_nodeid().v);
+       snprintf(realtfile, sizeof(realtfile), tfile.c_str(), (int)client->get_nodeid().v);
 
         if (run_me()) {
           dout(-2) << "trace " << tfile << " prefix=" << prefix << " count=" << iarg1 << " data=" << playdata << dendl;
@@ -1661,14 +1661,14 @@ int SyntheticClient::make_dirs(const char *basedir, int dirs, int files, int dep
   char d[500];
   dout(3) << "make_dirs " << basedir << " dirs " << dirs << " files " << files << " depth " << depth << dendl;
   for (int i=0; i<files; i++) {
-    sprintf(d,"%s/file.%d", basedir, i);
+    snprintf(d, sizeof(d), "%s/file.%d", basedir, i);
     client->mknod(d, 0644);
   }
 
   if (depth == 0) return 0;
 
   for (int i=0; i<dirs; i++) {
-    sprintf(d, "%s/dir.%d", basedir, i);
+    snprintf(d, sizeof(d), "%s/dir.%d", basedir, i);
     make_dirs(d, dirs, files, depth-1);
   }
   
@@ -1691,14 +1691,14 @@ int SyntheticClient::stat_dirs(const char *basedir, int dirs, int files, int dep
   char d[500];
   dout(3) << "stat_dirs " << basedir << " dirs " << dirs << " files " << files << " depth " << depth << dendl;
   for (int i=0; i<files; i++) {
-    sprintf(d,"%s/file.%d", basedir, i);
+    snprintf(d, sizeof(d), "%s/file.%d", basedir, i);
     client->lstat(d, &st);
   }
 
   if (depth == 0) return 0;
 
   for (int i=0; i<dirs; i++) {
-    sprintf(d, "%s/dir.%d", basedir, i);
+    snprintf(d, sizeof(d), "%s/dir.%d", basedir, i);
     stat_dirs(d, dirs, files, depth-1);
   }
   
@@ -1725,7 +1725,7 @@ int SyntheticClient::read_dirs(const char *basedir, int dirs, int files, int dep
   }
 
   for (int i=0; i<files; i++) {
-    sprintf(d,"%s/file.%d", basedir, i);
+    snprintf(d, sizeof(d), "%s/file.%d", basedir, i);
     utime_t s = g_clock.now();
     if (client->lstat(d, &st) < 0) {
       dout(2) << "read_dirs failed stat on " << d << ", stopping" << dendl;
@@ -1737,7 +1737,7 @@ int SyntheticClient::read_dirs(const char *basedir, int dirs, int files, int dep
 
   if (depth > 0) 
     for (int i=0; i<dirs; i++) {
-      sprintf(d, "%s/dir.%d", basedir, i);
+      snprintf(d, sizeof(d), "%s/dir.%d", basedir, i);
       if (read_dirs(d, dirs, files, depth-1) < 0) return -1;
     }
 
@@ -1752,14 +1752,14 @@ int SyntheticClient::make_files(int num, int count, int priv, bool more)
 
   if (priv) {
     for (int c=0; c<count; c++) {
-      sprintf(d,"dir.%d.run%d", whoami, c);
+      snprintf(d, sizeof(d), "dir.%d.run%d", whoami, c);
       client->mkdir(d, 0755);
     }
   } else {
     // shared
     if (true || whoami == 0) {
       for (int c=0; c<count; c++) {
-        sprintf(d,"dir.%d.run%d", 0, c);
+        snprintf(d, sizeof(d), "dir.%d.run%d", 0, c);
         client->mkdir(d, 0755);
       }
     } else {
@@ -1772,7 +1772,7 @@ int SyntheticClient::make_files(int num, int count, int priv, bool more)
   utime_t start = g_clock.now();
   for (int c=0; c<count; c++) {
     for (int n=0; n<num; n++) {
-      sprintf(d,"dir.%d.run%d/file.client%d.%d", priv ? whoami:0, c, whoami, n);
+      snprintf(d, sizeof(d), "dir.%d.run%d/file.client%d.%d", priv ? whoami:0, c, whoami, n);
 
       client->mknod(d, 0644);
 
@@ -1806,7 +1806,7 @@ int SyntheticClient::link_test()
 
   utime_t start = g_clock.now();
   for (int i=0; i<num; i++) {
-    sprintf(d,"orig/file.%d", i);
+    snprintf(d, sizeof(d), "orig/file.%d", i);
     client->mknod(d, 0755);
   }
   utime_t end = g_clock.now();
@@ -1817,8 +1817,8 @@ int SyntheticClient::link_test()
   // link
   start = g_clock.now();
   for (int i=0; i<num; i++) {
-    sprintf(d,"orig/file.%d", i);
-    sprintf(e,"copy/file.%d", i);
+    snprintf(d, sizeof(d), "orig/file.%d", i);
+    snprintf(e, sizeof(e), "copy/file.%d", i);
     client->link(d, e);
   }
   end = g_clock.now();
@@ -1835,7 +1835,7 @@ int SyntheticClient::create_shared(int num)
   char d[255];
   client->mkdir("test", 0755);
   for (int n=0; n<num; n++) {
-    sprintf(d,"test/file.%d", n);
+    snprintf(d, sizeof(d), "test/file.%d", n);
     client->mknod(d, 0644);
   }
   
@@ -1850,14 +1850,14 @@ int SyntheticClient::open_shared(int num, int count)
     // open
     list<int> fds;
     for (int n=0; n<num; n++) {
-      sprintf(d,"test/file.%d", n);
+      snprintf(d, sizeof(d), "test/file.%d", n);
       int fd = client->open(d,O_RDONLY);
       if (fd > 0) fds.push_back(fd);
     }
 
     if (false && client->get_nodeid() == 0)
       for (int n=0; n<num; n++) {
-       sprintf(d,"test/file.%d", n);
+       snprintf(d, sizeof(d), "test/file.%d", n);
        client->unlink(d);
       }
 
@@ -2863,17 +2863,17 @@ void SyntheticClient::foo()
     client->mkdir("/a", 0755);
     client->mkdir("/b", 0755);
     for (int i=0; i<10; i++) {
-      sprintf(a, "/a/%d", i);
+      snprintf(a, sizeof(a), "/a/%d", i);
       client->mknod(a, 0644);
     }
     while (1) {
       for (int i=0; i<10; i++) {
-       sprintf(a, "/a/%d", i);
-       sprintf(b, "/b/%d", i);
+       snprintf(a, sizeof(a), "/a/%d", i);
+       snprintf(b, sizeof(b), "/b/%d", i);
        client->link(a, b);
       }
       for (int i=0; i<10; i++) {
-       sprintf(b, "/b/%d", i);
+       snprintf(b, sizeof(b), "/b/%d", i);
        client->unlink(b);
       }
     }
@@ -2922,7 +2922,7 @@ void SyntheticClient::foo()
       int b = rand() % s;
       int c = rand() % s;
       char src[80];
-      sprintf(src, "syn.0.0/dir.%d/dir.%d/file.%d", a, b, c);
+      snprintf(src, sizeof(src), "syn.0.0/dir.%d/dir.%d/file.%d", a, b, c);
       //int fd = 
       client->open(src, O_RDONLY);
     }
@@ -2942,8 +2942,8 @@ void SyntheticClient::foo()
       int f = rand() % s;
       char src[80];
       char dst[80];
-      sprintf(src, "syn.0.0/dir.%d/dir.%d/file.%d", a, b, c);
-      sprintf(dst, "syn.0.0/dir.%d/dir.%d/file.%d", d, e, f);
+      snprintf(src, sizeof(src), "syn.0.0/dir.%d/dir.%d/file.%d", a, b, c);
+      snprintf(dst, sizeof(dst), "syn.0.0/dir.%d/dir.%d/file.%d", d, e, f);
       client->rename(src, dst);
     }
     return;
@@ -2962,8 +2962,8 @@ void SyntheticClient::foo()
       int f = rand() % s;
       char src[80];
       char dst[80];
-      sprintf(src, "syn.0.0/dir.%d/dir.%d/file.%d", a, b, c);
-      sprintf(dst, "syn.0.0/dir.%d/dir.%d/newlink.%d", d, e, f);
+      snprintf(src, sizeof(src), "syn.0.0/dir.%d/dir.%d/file.%d", a, b, c);
+      snprintf(dst, sizeof(dst), "syn.0.0/dir.%d/dir.%d/newlink.%d", d, e, f);
       client->link(src, dst);
     }
     srand(0);
@@ -2977,8 +2977,8 @@ void SyntheticClient::foo()
       int f = rand() % s;
       char src[80];
       char dst[80];
-      sprintf(src, "syn.0.0/dir.%d/dir.%d/file.%d", a, b, c);
-      sprintf(dst, "syn.0.0/dir.%d/dir.%d/newlink.%d", d, e, f);
+      snprintf(src, sizeof(src), "syn.0.0/dir.%d/dir.%d/file.%d", a, b, c);
+      snprintf(dst, sizeof(dst), "syn.0.0/dir.%d/dir.%d/newlink.%d", d, e, f);
       client->unlink(dst);
     }
 
@@ -3065,7 +3065,7 @@ int SyntheticClient::thrash_links(const char *basedir, int dirs, int files, int
          char t[80];
          for (int d=0; d<dep; d++) {
            int a = rand() % dirs;
-           sprintf(t, "/dir.%d", a);
+           snprintf(t, sizeof(t), "/dir.%d", a);
            src += t;
          }
        }
@@ -3074,7 +3074,7 @@ int SyntheticClient::thrash_links(const char *basedir, int dirs, int files, int
          char t[80];
          for (int d=0; d<dep; d++) {
            int a = rand() % dirs;
-           sprintf(t, "/dir.%d", a);
+           snprintf(t, sizeof(t), "/dir.%d", a);
            dst += t;
          }
        }
@@ -3092,11 +3092,11 @@ int SyntheticClient::thrash_links(const char *basedir, int dirs, int files, int
        char t[80];
        for (int d=0; d<depth; d++) {
          int a = rand() % dirs;
-         sprintf(t, "/dir.%d", a);
+         snprintf(t, sizeof(t), "/dir.%d", a);
          src += t;
        }
        int a = rand() % files;
-       sprintf(t, "/file.%d", a);
+       snprintf(t, sizeof(t), "/file.%d", a);
        src += t;
       }
       string dst = basedir;
@@ -3104,11 +3104,11 @@ int SyntheticClient::thrash_links(const char *basedir, int dirs, int files, int
        char t[80];
        for (int d=0; d<depth; d++) {
          int a = rand() % dirs;
-         sprintf(t, "/dir.%d", a);
+         snprintf(t, sizeof(t), "/dir.%d", a);
          dst += t;
        }
        int a = rand() % files;
-       sprintf(t, "/file.%d", a);
+       snprintf(t, sizeof(t), "/file.%d", a);
        dst += t;
       }
       
@@ -3145,11 +3145,11 @@ int SyntheticClient::thrash_links(const char *basedir, int dirs, int files, int
       if (depth) {
        int d = rand() % (depth+1);
        for (int k=0; k<d; k++) {
-         sprintf(f, "/dir.%d", rand() % dirs);
+         snprintf(f, sizeof(f), "/dir.%d", rand() % dirs);
          file += f;
        }
       }
-      sprintf(f, "/file.%d", rand() % files);
+      snprintf(f, sizeof(f), "/file.%d", rand() % files);
       file += f;
       
       // pick a dir for our link
@@ -3157,11 +3157,11 @@ int SyntheticClient::thrash_links(const char *basedir, int dirs, int files, int
       if (depth) {
        int d = rand() % (depth+1);
        for (int k=0; k<d; k++) {
-         sprintf(f, "/dir.%d", rand() % dirs);
+         snprintf(f, sizeof(f), "/dir.%d", rand() % dirs);
          ln += f;
        }
       }
-      sprintf(f, "/ln.%d", i);
+      snprintf(f, sizeof(f), "/ln.%d", i);
       ln += f;
       
       client->link(file.c_str(), ln.c_str());  
index 4c9f70fbda71d2ce015efeeaa02ed2c9aa351f04..389e6f288d9ea52f6e5c4b021daa57fe862b4711 100644 (file)
@@ -156,7 +156,7 @@ void CephBroker::read(ResponseCallbackRead *cb, uint32_t fd, uint32_t amount) {
 
   if (!m_open_file_map.get(fd, fdata)) {
     char errbuf[32];
-    sprintf(errbuf, "%d", fd);
+    snprintf(errbuf, sizeof(errbuf), "%d", fd);
     cb->error(Error::DFSBROKER_BAD_FILE_HANDLE, errbuf);
     HT_ERRORF("bad file handle: %d", fd);
     return;
@@ -190,7 +190,7 @@ void CephBroker::append(ResponseCallbackAppend *cb, uint32_t fd,
 
   if (!m_open_file_map.get(fd, fdata)) {
     char errbuf[32];
-    sprintf(errbuf, "%d", fd);
+    snprintf(errbuf, sizeof(errbuf), "%d", fd);
     cb->error(Error::DFSBROKER_BAD_FILE_HANDLE, errbuf);
     return;
   }
@@ -226,7 +226,7 @@ void CephBroker::seek(ResponseCallback *cb, uint32_t fd, uint64_t offset) {
 
   if (!m_open_file_map.get(fd, fdata)) {
     char errbuf[32];
-    sprintf(errbuf, "%d", fd);
+    snprintf(errbuf, sizeof(errbuf), "%d", fd);
     cb->error(Error::DFSBROKER_BAD_FILE_HANDLE, errbuf);
     return;
   }
@@ -283,7 +283,7 @@ void CephBroker::pread(ResponseCallbackRead *cb, uint32_t fd, uint64_t offset,
 
   if (!m_open_file_map.get(fd, fdata)) {
     char errbuf[32];
-    sprintf(errbuf, "%d", fd);
+    snprintf(errbuf, sizeof(errbuf), "%d", fd);
     cb->error(Error::DFSBROKER_BAD_FILE_HANDLE, errbuf);
     return;
   }
@@ -360,7 +360,7 @@ void CephBroker::flush(ResponseCallback *cb, uint32_t fd) {
 
   if (!m_open_file_map.get(fd, fdata)) {
     char errbuf[32];
-    sprintf(errbuf, "%d", fd);
+    snprintf(errbuf, sizeof(errbuf), "%d", fd);
     cb->error(Error::DFSBROKER_BAD_FILE_HANDLE, errbuf);
     return;
   }
index f9a12ce6ea8796eb9bdc0f1a13e63ed56013eef6..7e79006830e58cd1e9f1ae1de3ed2fdb40200b60 100644 (file)
@@ -101,7 +101,7 @@ int main(int argc, const char **argv)
 
   // cd on exit, so that gmon.out (if any) goes into a separate directory for each node.
   char s[20];
-  sprintf(s, "gmon/%d", getpid());
+  snprintf(s, sizeof(s), "gmon/%d", getpid());
   if (mkdir(s, 0755) == 0)
     chdir(s);
 
index 2bf4d4a19ef186b36ebd29ce3a2c531691a3fd24..e1190f556812da69ae64fd0b8486033f9d34aada 100644 (file)
@@ -160,7 +160,7 @@ int main(int argc, const char **argv)
 
   // cd on exit, so that gmon.out (if any) goes into a separate directory for each node.
   char s[20];
-  sprintf(s, "gmon/%d", getpid());
+  snprintf(s, sizeof(s), "gmon/%d", getpid());
   if (mkdir(s, 0755) == 0)
     chdir(s);
 
index 030ecf204ec71c1e8d51b56be91df3d9eef73e2b..8a45320a3354f9108729086efffc18387401b739 100644 (file)
@@ -65,8 +65,8 @@ void _dout_open_log()
 
     char hostname[80];
     gethostname(hostname, 79);
-    sprintf(_dout_path, "%s/%s.%d", _dout_dir, hostname, getpid());
-    sprintf(_dout_file, "%s.%d", hostname, getpid());
+    snprintf(_dout_path, sizeof(_dout_path), "%s/%s.%d", _dout_dir, hostname, getpid());
+    snprintf(_dout_file, sizeof(_dout_file), "%s.%d", hostname, getpid());
   }
 
   _dout_out.close();
@@ -91,8 +91,8 @@ int _dout_rename_output_file()  // after calling daemon()
     gethostname(hostname, 79);
 
     strcpy(oldpath, _dout_path);
-    sprintf(_dout_path, "%s/%s.%d", _dout_dir, hostname, getpid());
-    sprintf(_dout_file, "%s.%d", hostname, getpid());
+    snprintf(_dout_path, sizeof(_dout_path), "%s/%s.%d", _dout_dir, hostname, getpid());
+    snprintf(_dout_file, sizeof(_dout_file), "%s.%d", hostname, getpid());
     dout(0) << "---- renamed log " << oldpath << " -> " << _dout_path << " ----" << dendl;
     ::rename(oldpath, _dout_path);
 
@@ -111,14 +111,14 @@ int _dout_create_courtesy_output_symlink(const char *type, __s64 n)
     if (_dout_need_open)
       _dout_open_log();
 
-    sprintf(_dout_symlink_path, "%s/%s%lld", _dout_symlink_dir, type, (long long)n);
+    snprintf(_dout_symlink_path, sizeof(_dout_symlink_path), "%s/%s%lld", _dout_symlink_dir, type, (long long)n);
 
     // rotate out old symlink
     int n = 0;
     while (1) {
       char fn[200];
       struct stat st;
-      sprintf(fn, "%s.%lld", _dout_symlink_path, (long long)n);
+      snprintf(fn, sizeof(fn), "%s.%lld", _dout_symlink_path, (long long)n);
       if (::stat(fn, &st) != 0)
        break;
       n++;
@@ -126,10 +126,10 @@ int _dout_create_courtesy_output_symlink(const char *type, __s64 n)
     while (n >= 0) {
       char a[200], b[200];
       if (n)
-       sprintf(a, "%s.%lld", _dout_symlink_path, (long long)n-1);
+       snprintf(a, sizeof(a), "%s.%lld", _dout_symlink_path, (long long)n-1);
       else
-       sprintf(a, "%s", _dout_symlink_path);
-      sprintf(b, "%s.%lld", _dout_symlink_path, (long long)n);
+       snprintf(a, sizeof(a), "%s", _dout_symlink_path);
+      snprintf(b, sizeof(b), "%s.%lld", _dout_symlink_path, (long long)n);
       ::rename(a, b);
       dout(0) << "---- renamed symlink " << a << " -> " << b << " ----" << dendl;
       n--;
index 3121fa780594b7c2fdfddb6052818d83346dd7a8..5ac40a6e870ed0dba4cba0bdcc4840ebb644ca6f 100644 (file)
@@ -1008,10 +1008,11 @@ void parse_startup_config_options(std::vector<const char*>& args, bool isdaemon,
     g_conf.type = strdup(module_type);
 
     if (g_conf.id) {
-       g_conf.name = (char *)malloc(strlen(module_type) + strlen(g_conf.id) + 2);
-       sprintf(g_conf.name, "%s.%s", g_conf.type, g_conf.id);
-       g_conf.alt_name = (char *)malloc(strlen(module_type) + strlen(g_conf.id) + 1);
-       sprintf(g_conf.alt_name, "%s%s", module_type, g_conf.id);
+       int len = strlen(module_type) + strlen(g_conf.id) + 2;
+       g_conf.name = (char *)malloc(len);
+       snprintf(g_conf.name, len, "%s.%s", g_conf.type, g_conf.id);
+       g_conf.alt_name = (char *)malloc(len - 1);
+       snprintf(g_conf.alt_name, len - 1, "%s%s", module_type, g_conf.id);
     } else {
        g_conf.name = g_conf.type;
     }
index cfba432e32b057b7eeb9910acd02e3595dc3d610..70af58d007f9ec9e2b373cc50961b4a7d789b27d 100644 (file)
@@ -183,7 +183,7 @@ int main(int argc, const char **argv)
 
   // cd on exit, so that gmon.out (if any) goes into a separate directory for each node.
   char s[20];
-  sprintf(s, "gmon/%d", getpid());
+  snprintf(s, sizeof(s), "gmon/%d", getpid());
   if (mkdir(s, 0755) == 0)
     chdir(s);
 
index af1095ce607711e54575dfb810736b383c5f1ea4..de82c6b7537ad41ef9480916770c32f9a4a9948b 100644 (file)
@@ -478,7 +478,7 @@ void print_rule_name(ostream& out, int t, CrushWrapper &crush)
 void print_fixedpoint(ostream& out, int i)
 {
   char s[20];
-  sprintf(s, "%.3f", (float)i / (float)0x10000);
+  snprintf(s, sizeof(s), "%.3f", (float)i / (float)0x10000);
   out << s;
 }
 
@@ -810,11 +810,11 @@ int main(int argc, const char **argv)
 
        char format[20];
        if (l.size)
-         sprintf(format, "%s%%d", l.name);
+         snprintf(format, sizeof(format), "%s%%d", l.name);
        else
          strcpy(format, l.name);
        char name[20];
-       sprintf(name, format, i);
+       snprintf(name, sizeof(name), format, i);
        crush.set_item_name(id, name);
 
        dout(0) << " in bucket " << id << " '" << name << "' size " << j << " weight " << weight << dendl;
index bcbb5771461b1dbc5843f96331944d692c1aa8da..4f8307b9d7187bc864b358a8baee651046ca41bc 100644 (file)
@@ -39,11 +39,11 @@ char *nice_blocks(block_t b)
   static char s[20];
   float sz = b*4.0;
   if (sz > (10 << 20)) 
-    sprintf(s,"%.1f GB", sz / (1024.0*1024.0));
+    snprintf(s, sizeof(s), "%.1f GB", sz / (1024.0*1024.0));
   else if (sz > (10 << 10)) 
-    sprintf(s,"%.1f MB", sz / (1024.0));
+    snprintf(s, sizeof(s), "%.1f MB", sz / (1024.0));
   else 
-    sprintf(s,"%llu KB", b*4ULL);
+    snprintf(s, sizeof(s), "%llu KB", b*4ULL);
   return s;
 }
 
index 8a88d6f395abd1ddd1c7830985cbf447920b31cd..11272d6967c1cf5eb21249fc47ed2e4aa0062833 100644 (file)
@@ -100,7 +100,7 @@ int main(int argc, const char **argv) {
   Monitor *mon[g_conf.num_mon];
   for (int i=0; i<g_conf.num_mon; i++) {
     char fn[100];
-    sprintf(fn, "mondata/mon%d", i);
+    snprintf(fn, sizeof(fn), "mondata/mon%d", i);
     MonitorStore *store = new MonitorStore(fn);
     mon[i] = new Monitor(i, store, new FakeMessenger(entity_name_t::MON(i)), monmap);
     mon[i]->mkfs();
index 2e4031c74e948ca7262ad0d6ab687c5b4d77e733..8b6c0c85357fa9944e8738d7aff34661a4278dbe 100644 (file)
@@ -104,7 +104,7 @@ int main(int argc, const char **argv)
   Monitor *mon[g_conf.num_mon];
   for (int i=0; i<g_conf.num_mon; i++) {
     char fn[100];
-    sprintf(fn, "mondata/mon%d", i);
+    snprintf(fn, sizeof(fn), "mondata/mon%d", i);
     MonitorStore *store = new MonitorStore(fn);
     mon[i] = new Monitor(i, store, new FakeMessenger(entity_name_t::MON(i)), monmap);
     mon[i]->mkfs();
index e8b75a0cff587ed462a585d78b4fbfa1f9a93659..e641b2bed42639a566f497685ce8155c3896e22f 100644 (file)
@@ -477,7 +477,7 @@ void CInode::make_path_string(string& s, bool force, CDentry *use_parent)
   } 
   else {
     char n[20];
-    sprintf(n, "#%llx", (unsigned long long)(ino()));
+    snprintf(n, sizeof(n), "#%llx", (unsigned long long)(ino()));
     s += n;
   }
 }
@@ -520,7 +520,7 @@ void CInode::make_anchor_trace(vector<Anchor>& trace)
 void CInode::name_stray_dentry(string& dname)
 {
   char s[20];
-  sprintf(s, "%llx", (unsigned long long)inode.ino.val);
+  snprintf(s, sizeof(s), "%llx", (unsigned long long)inode.ino.val);
   dname = s;
 }
 
@@ -672,7 +672,7 @@ void CInode::store(Context *fin)
   m.setxattr("inode", bl);
 
   char n[30];
-  sprintf(n, "%llx.%08llx", (long long unsigned)ino(), (long long unsigned)frag_t());
+  snprintf(n, sizeof(n), "%llx.%08llx", (long long unsigned)ino(), (long long unsigned)frag_t());
   object_t oid(n);
   OSDMap *osdmap = mdcache->mds->objecter->osdmap;
   ceph_object_layout ol = osdmap->make_object_layout(oid,
@@ -708,7 +708,7 @@ void CInode::fetch(Context *fin)
 
   C_Inode_Fetched *c = new C_Inode_Fetched(this, fin);
   char n[30];
-  sprintf(n, "%llx.%08llx", (long long unsigned)ino(), (long long unsigned)frag_t());
+  snprintf(n, sizeof(n), "%llx.%08llx", (long long unsigned)ino(), (long long unsigned)frag_t());
   object_t oid(n);
 
   ObjectOperation rd;
@@ -785,7 +785,7 @@ void CInode::store_parent(Context *fin)
   SnapContext snapc;
 
   char n[30];
-  sprintf(n, "%llx.%08llx", (long long unsigned)ino(), (long long unsigned)frag_t());
+  snprintf(n, sizeof(n), "%llx.%08llx", (long long unsigned)ino(), (long long unsigned)frag_t());
   object_t oid(n);
   OSDMap *osdmap = mdcache->mds->objecter->osdmap;
   ceph_object_layout ol = osdmap->make_object_layout(oid,
index f7b41a4867e88358cbc372e0d3e1e3622e6f186b..1b0b824f615f9832c64cc34961f1044a39f2de4a 100644 (file)
@@ -1024,8 +1024,8 @@ void MDBalancer::dump_pop_map()
   return; // this is dumb
 
 
-  char fn[20];
-  sprintf(fn, "popdump.%d.mds%d", beat_epoch, mds->get_nodeid());
+  char fn[32];
+  snprintf(fn, sizeof(fn), "popdump.%d.mds%d", beat_epoch, mds->get_nodeid());
 
   dout(1) << "dump_pop_map to " << fn << dendl;
 
index c18c34bbd7779d3d0aef0b9176b4cdf1788773c8..1437eaeddaa1ac6742a2d3cf0d9208373e4a1202 100644 (file)
@@ -277,7 +277,7 @@ void MDCache::create_empty_hierarchy(C_Gather *gather)
 
   // create mds dir
   char myname[10];
-  sprintf(myname, "mds%d", mds->whoami);
+  snprintf(myname, sizeof(myname), "mds%d", mds->whoami);
   CInode *my = create_system_inode(MDS_INO_MDSDIR(mds->whoami), S_IFDIR);
   CDir *mydir = my->get_or_open_dirfrag(this, frag_t());
   cephdir->add_primary_dentry(myname, my);
@@ -487,7 +487,7 @@ void MDCache::open_root()
     }
 
     char n[10];
-    sprintf(n, "mds%d", mds->whoami);
+    snprintf(n, sizeof(n), "mds%d", mds->whoami);
     CDentry *mydn = cephdir->lookup(n);
     assert(mydn);
     
@@ -521,7 +521,7 @@ void MDCache::open_root()
     }
     
     char n[10];
-    sprintf(n, "mds%d", mds->whoami);
+    snprintf(n, sizeof(n), "mds%d", mds->whoami);
     CDentry *mydn = cephdir->lookup(n);
     if (!mydn) {
       filepath fp;
@@ -4536,7 +4536,7 @@ void MDCache::_recovered(CInode *in, int r, __u64 size, utime_t mtime)
 void MDCache::purge_prealloc_ino(inodeno_t ino, Context *fin)
 {
   char n[30];
-  sprintf(n, "%llx.%08llx", (long long unsigned)ino, 0ull);
+  snprintf(n, sizeof(n), "%llx.%08llx", (long long unsigned)ino, 0ull);
   object_t oid(n);
   dout(10) << "purge_prealloc_ino " << ino << " oid " << oid << dendl;
   ceph_object_layout ol = mds->osdmap->make_object_layout(oid,
@@ -7426,7 +7426,7 @@ void MDCache::handle_discover(MDiscover *dis)
       // is this a new mds dir?
       if (curdir->ino() == MDS_INO_CEPH) {
        char t[10];
-       sprintf(t, "mds%d", from);
+       snprintf(t, sizeof(t), "mds%d", from);
        if (t == dis->get_dentry(i)) {
          // yes.
          _create_system_file(curdir, t, create_system_inode(MDS_INO_MDSDIR(from), S_IFDIR),
@@ -8512,9 +8512,9 @@ void MDCache::show_subtrees(int dbl)
 
     char s[10];
     if (dir->get_dir_auth().second == CDIR_AUTH_UNKNOWN)
-      sprintf(s, "%2d   ", dir->get_dir_auth().first);
+      snprintf(s, sizeof(s), "%2d   ", dir->get_dir_auth().first);
     else
-      sprintf(s, "%2d,%2d", dir->get_dir_auth().first, dir->get_dir_auth().second);
+      snprintf(s, sizeof(s), "%2d,%2d", dir->get_dir_auth().first, dir->get_dir_auth().second);
     
     // print
     dout(dbl) << indent << "|_" << pad << s << " " << auth << *dir << dendl;
@@ -8590,7 +8590,7 @@ void MDCache::dump_cache(const char *fn)
 
   char deffn[200];
   if (!fn) {
-    sprintf(deffn, "cachedump.%d.mds%d", (int)mds->mdsmap->get_epoch(), mds->get_nodeid());
+    snprintf(deffn, sizeof(deffn), "cachedump.%d.mds%d", (int)mds->mdsmap->get_epoch(), mds->get_nodeid());
     fn = deffn;
   }
 
index 36ae8699d67eb987a7e46b922c13df230c8b1efc..1eea23f2b6eb77f1b2126beff5dc4e5920548543 100644 (file)
@@ -48,7 +48,7 @@ void MDLog::reopen_logger(utime_t start, bool append)
 {
   // logger
   char name[80];
-  sprintf(name, "mds%d.log", mds->get_nodeid());
+  snprintf(name, sizeof(name), "mds%d.log", mds->get_nodeid());
   logger = new Logger(name, &mdlog_logtype, append);
   logger->set_start(start);
 
index 45a7fedcf00dace8d18aedc7c9fc8c3d65791b2f..ce32957003b5141b9fed10fcf234b99359f43b60 100644 (file)
@@ -255,14 +255,14 @@ void MDS::reopen_logger(utime_t start)
 
   // log
   char name[80];
-  sprintf(name, "mds%d", whoami);
+  snprintf(name, sizeof(name), "mds%d", whoami);
 
   bool append = mdsmap->get_inc(whoami) > 1;
 
   logger = new Logger(name, (LogType*)&mds_logtype, append);
   logger->set_start(start);
 
-  sprintf(name, "mds%d.mem", whoami);
+  snprintf(name, sizeof(name), "mds%d.mem", whoami);
   mlogger = new Logger(name, (LogType*)&mdm_logtype, append);
 
   mdlog->reopen_logger(start, append);
index bba599de9529619007deabbd874845c9f91fe3bd..d92b6f345bebae60cef1f8f982883e213dd64d49 100644 (file)
@@ -114,9 +114,9 @@ object_t MDSTable::get_object_name()
 {
   char n[50];
   if (per_mds)
-    sprintf(n, "mds%d_%s", mds->whoami, table_name);
+    snprintf(n, sizeof(n), "mds%d_%s", mds->whoami, table_name);
   else
-    sprintf(n, "mds_%s", table_name);
+    snprintf(n, sizeof(n), "mds_%s", table_name);
   return object_t(n);
 }
 
index cc67fec0834d9907fe9c7424596b3d0e5982277c..7cc47e3041d992b41b647ebd46eaa5327a4d0a50 100644 (file)
@@ -84,7 +84,7 @@ void Server::reopen_logger(utime_t start, bool append)
 
   // logger
   char name[80];
-  sprintf(name, "mds%d.server", mds->get_nodeid());
+  snprintf(name, sizeof(name), "mds%d.server", mds->get_nodeid());
   logger = new Logger(name, &mdserver_logtype, append);
   logger->set_start(start);
 }
index 4ffe75047bbe67c08f5d9c5d99fc70601be167a5..d6a2293250345dd57cca78af3ecc9d17efd1e5e1 100644 (file)
@@ -42,7 +42,7 @@ void SessionMap::dump()
 object_t SessionMap::get_object_name()
 {
   char s[30];
-  sprintf(s, "mds%d_sessionmap", mds->whoami);
+  snprintf(s, sizeof(s), "mds%d_sessionmap", mds->whoami);
   return object_t(s);
 }
 
index fbf9cf4fe2f9e2482a26e43661b6560745cecfa3..468e5eeac3f72906e43fb2c977d9617464b247b4 100644 (file)
@@ -260,7 +260,7 @@ const string& SnapInfo::get_long_name()
 {
   if (long_name.length() == 0) {
     char nm[80];
-    sprintf(nm, "_%s_%llu", name.c_str(), (unsigned long long)ino);
+    snprintf(nm, sizeof(nm), "_%s_%llu", name.c_str(), (unsigned long long)ino);
     long_name = nm;
   }
   return long_name;
index 43a86c6dbc83eb305e903071e1d11bb052872368..b2cf400c33ff06e1638ac84bba12694d51e7b92c 100644 (file)
@@ -85,7 +85,7 @@ int MonClient::build_initial_monmap()
        for (int i=0; i<15; i++) {
          char monname[20];
          char *val = 0;
-         sprintf(monname, "mon%d", i);
+         snprintf(monname, sizeof(monname), "mon%d", i);
          c.read(monname, "mon addr", &val, 0);
          if (!val || !val[0])
            break;
index a9dddfc0b735fcbfb243870eedf7f650188e9d54..7474362dad3869af569594093d69a6e87fd9f6e5 100644 (file)
@@ -35,7 +35,7 @@ static ostream& _prefix(const string& dir) {
 
 int MonitorStore::mount()
 {
-  char t[200];
+  char t[1024];
 
   dout(1) << "mount" << dendl;
   // verify dir exists
@@ -47,7 +47,7 @@ int MonitorStore::mount()
   ::closedir(d);
 
   // open lockfile
-  sprintf(t, "%s/lock", dir.c_str());
+  snprintf(t, sizeof(t), "%s/lock", dir.c_str());
   lock_fd = ::open(t, O_CREAT|O_RDWR, 0600);
   if (lock_fd < 0)
     return -errno;
@@ -66,8 +66,8 @@ int MonitorStore::mount()
   if (g_conf.chdir && g_conf.chdir[0] && dir[0] != '/') {
     // combine it with the cwd, in case fuse screws things up (i.e. fakefuse)
     string old = dir;
-    char cwd[200];
-    getcwd(cwd, 200);
+    char cwd[1024];
+    getcwd(cwd, sizeof(cwd));
     dir = cwd;
     dir += "/";
     dir += old;
@@ -85,8 +85,8 @@ int MonitorStore::mkfs()
 {
   dout(1) << "mkfs" << dendl;
 
-  char cmd[200];
-  sprintf(cmd, "test -d %s && /bin/rm -r %s ; mkdir -p %s", dir.c_str(), dir.c_str(), dir.c_str());
+  char cmd[1024];
+  snprintf(cmd, sizeof(cmd), "test -d %s && /bin/rm -r %s ; mkdir -p %s", dir.c_str(), dir.c_str(), dir.c_str());
   dout(1) << cmd << dendl;
   int r = system(cmd);
   return r;
@@ -100,11 +100,11 @@ void MonitorStore::sync()
 
 version_t MonitorStore::get_int(const char *a, const char *b)
 {
-  char fn[200];
+  char fn[1024];
   if (b)
-    sprintf(fn, "%s/%s/%s", dir.c_str(), a, b);
+    snprintf(fn, sizeof(fn), "%s/%s/%s", dir.c_str(), a, b);
   else
-    sprintf(fn, "%s/%s", dir.c_str(), a);
+    snprintf(fn, sizeof(fn), "%s/%s", dir.c_str(), a);
   
   FILE *f = ::fopen(fn, "r");
   if (!f) 
@@ -127,21 +127,21 @@ version_t MonitorStore::get_int(const char *a, const char *b)
 
 void MonitorStore::put_int(version_t val, const char *a, const char *b, bool sync)
 {
-  char fn[200];
-  sprintf(fn, "%s/%s", dir.c_str(), a);
+  char fn[1024];
+  snprintf(fn, sizeof(fn), "%s/%s", dir.c_str(), a);
   if (b) {
     ::mkdir(fn, 0755);
     dout(15) << "set_int " << a << "/" << b << " = " << val << dendl;
-    sprintf(fn, "%s/%s/%s", dir.c_str(), a, b);
+    snprintf(fn, sizeof(fn), "%s/%s/%s", dir.c_str(), a, b);
   } else {
     dout(15) << "set_int " << a << " = " << val << dendl;
   }
   
   char vs[30];
-  sprintf(vs, "%lld\n", (unsigned long long)val);
+  snprintf(vs, sizeof(vs), "%lld\n", (unsigned long long)val);
 
-  char tfn[200];
-  sprintf(tfn, "%s.new", fn);
+  char tfn[1024];
+  snprintf(tfn, sizeof(tfn), "%s.new", fn);
 
   int fd = ::open(tfn, O_WRONLY|O_CREAT, 0644);
   assert(fd >= 0);
@@ -158,13 +158,13 @@ void MonitorStore::put_int(version_t val, const char *a, const char *b, bool syn
 
 bool MonitorStore::exists_bl_ss(const char *a, const char *b)
 {
-  char fn[200];
+  char fn[1024];
   if (b) {
     dout(15) << "exists_bl " << a << "/" << b << dendl;
-    sprintf(fn, "%s/%s/%s", dir.c_str(), a, b);
+    snprintf(fn, sizeof(fn), "%s/%s/%s", dir.c_str(), a, b);
   } else {
     dout(15) << "exists_bl " << a << dendl;
-    sprintf(fn, "%s/%s", dir.c_str(), a);
+    snprintf(fn, sizeof(fn), "%s/%s", dir.c_str(), a);
   }
   
   struct stat st;
@@ -176,24 +176,24 @@ bool MonitorStore::exists_bl_ss(const char *a, const char *b)
 
 int MonitorStore::erase_ss(const char *a, const char *b)
 {
-  char fn[200];
+  char fn[1024];
   if (b) {
     dout(15) << "erase_ss " << a << "/" << b << dendl;
-    sprintf(fn, "%s/%s/%s", dir.c_str(), a, b);
+    snprintf(fn, sizeof(fn), "%s/%s/%s", dir.c_str(), a, b);
   } else {
     dout(15) << "erase_ss " << a << dendl;
-    sprintf(fn, "%s/%s", dir.c_str(), a);
+    snprintf(fn, sizeof(fn), "%s/%s", dir.c_str(), a);
   }
   return ::unlink(fn);
 }
 
 int MonitorStore::get_bl_ss(bufferlist& bl, const char *a, const char *b)
 {
-  char fn[200];
+  char fn[1024];
   if (b) {
-    sprintf(fn, "%s/%s/%s", dir.c_str(), a, b);
+    snprintf(fn, sizeof(fn), "%s/%s/%s", dir.c_str(), a, b);
   } else {
-    sprintf(fn, "%s/%s", dir.c_str(), a);
+    snprintf(fn, sizeof(fn), "%s/%s", dir.c_str(), a);
   }
   
   int fd = ::open(fn, O_RDONLY);
@@ -240,23 +240,23 @@ int MonitorStore::get_bl_ss(bufferlist& bl, const char *a, const char *b)
 
 int MonitorStore::write_bl_ss(bufferlist& bl, const char *a, const char *b, bool append, bool sync)
 {
-  char fn[200];
-  sprintf(fn, "%s/%s", dir.c_str(), a);
+  char fn[1024];
+  snprintf(fn, sizeof(fn), "%s/%s", dir.c_str(), a);
   if (b) {
     ::mkdir(fn, 0755);
     dout(15) << "put_bl " << a << "/" << b << " = " << bl.length() << " bytes" << dendl;
-    sprintf(fn, "%s/%s/%s", dir.c_str(), a, b);
+    snprintf(fn, sizeof(fn), "%s/%s/%s", dir.c_str(), a, b);
   } else {
     dout(15) << "put_bl " << a << " = " << bl.length() << " bytes" << dendl;
   }
   
-  char tfn[200];
+  char tfn[1024];
   int err = 0;
   int fd;
   if (append) {
     fd = ::open(fn, O_WRONLY|O_CREAT|O_APPEND, 0644);
   } else {
-    sprintf(tfn, "%s.new", fn);
+    snprintf(tfn, sizeof(tfn), "%s.new", fn);
     fd = ::open(tfn, O_WRONLY|O_CREAT, 0644);
   }
   assert(fd >= 0);
index 48c68971a46d12aa3aab48946c172b9bed05af2a..e4aa0d701223386b42054850c267d59725c14854 100644 (file)
@@ -146,7 +146,8 @@ lock_mtab (void) {
                signals_have_been_setup = 1;
        }
 
-       sprintf(linktargetfile, MOUNTLOCK_LINKTARGET, getpid ());
+       snprintf(linktargetfile, sizeof(linktargetfile), MOUNTLOCK_LINKTARGET,
+                getpid ());
 
        i = open (linktargetfile, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR);
        if (i < 0) {
index 4cae28df8547a518b87fbaa6069b9c12d4099e2c..df9248473ac1920279963e1960851a83b66532d0 100644 (file)
@@ -389,9 +389,9 @@ int FakeMessenger::submit_message(Message *m, entity_inst_t inst)
   loggers[dest]->inc("-recv",1);
   
   char s[20];
-  sprintf(s,"+%s", m->get_type_name());
+  snprintf(s, sizeof(s), "+%s", m->get_type_name());
   loggers[get_myaddr()]->inc(s);
-  sprintf(s,"-%s", m->get_type_name());
+  snprintf(s, sizeof(s), ,"-%s", m->get_type_name());
   loggers[dest]->inc(s);
 #endif
 
index 8ba928df3298b4390c9cd21eec358b9b0d79789f..812b50e9d92cc8c21438afade880787787ba3011 100644 (file)
@@ -1798,10 +1798,10 @@ int SimpleMessenger::Pipe::do_sendmsg(int sd, struct msghdr *msg, int len, bool
       char buf[20];
       while (left > 0) {
        if (col == 0) {
-         sprintf(buf, "%05x : ", pos);
+         snprintf(buf, sizeof(buf), "%05x : ", pos);
          *_dout << buf;
        }
-       sprintf(buf, " %02x", ((unsigned char*)v->iov_base)[vpos]);
+       snprintf(buf, sizeof(buf), " %02x", ((unsigned char*)v->iov_base)[vpos]);
        *_dout << buf;
        left--;
        if (!left)
@@ -2052,7 +2052,7 @@ static void write_pid_file(int pid)
   int fd = ::open(g_conf.pid_file, O_CREAT|O_TRUNC|O_WRONLY, 0644);
   if (fd >= 0) {
     char buf[20];
-    int len = sprintf(buf, "%d\n", pid);
+    int len = snprintf(buf, sizeof(buf), "%d\n", pid);
     ::write(fd, buf, len);
     ::close(fd);
   }
index c609c641405dc1f3962352f29e87fe26f5405340..9c73d838740537e4042054c7203aa934682c4f85 100644 (file)
@@ -110,9 +110,9 @@ int do_listxattr(const char *fn, char *names, size_t len) {
 // .............
 
 
-void get_attrname(const char *name, char *buf)
+static void get_attrname(const char *name, char *buf, int len)
 {
-  sprintf(buf, "user.ceph.%s", name);
+  snprintf(buf, len, "user.ceph.%s", name);
 }
 bool parse_attrname(char **name)
 {
@@ -140,7 +140,7 @@ int FileStore::statfs(struct statfs *buf)
   // 012345678901234567890123456789012345678901234567890123456789
   // yyyyyyyyyyyyyyyy.zzzzzzzz.a_s
 
-void FileStore::append_oname(const sobject_t &oid, char *s)
+void FileStore::append_oname(const sobject_t &oid, char *s, int len)
 {
   //assert(sizeof(oid) == 28);
   char *t = s + strlen(s);
@@ -163,11 +163,11 @@ void FileStore::append_oname(const sobject_t &oid, char *s)
   }
 
   if (oid.snap == CEPH_NOSNAP)
-    sprintf(t, "_head");
+    snprintf(t, len, "_head");
   else if (oid.snap == CEPH_SNAPDIR)
-    sprintf(t, "_snapdir");
+    snprintf(t, len, "_snapdir");
   else
-    sprintf(t, "_%llx", (long long unsigned)oid.snap);
+    snprintf(t, len, "_%llx", (long long unsigned)oid.snap);
   //parse_object(t+1);
 }
 
@@ -219,16 +219,18 @@ bool FileStore::parse_coll(char *s, coll_t& c)
   return r;
 }
 
-void FileStore::get_cdir(coll_t cid, char *s) 
+void FileStore::get_cdir(coll_t cid, char *s, int len
 {
-  s += sprintf(s, "%s/current/", basedir.c_str());
-  s += cid.print(s);
+  int ret = snprintf(s, len, "%s/current/", basedir.c_str());
+  s += ret;
+  len -= ret;
+  s += cid.print(s, len);
 }
 
-void FileStore::get_coname(coll_t cid, const sobject_t& oid, char *s) 
+void FileStore::get_coname(coll_t cid, const sobject_t& oid, char *s, int len
 {
-  get_cdir(cid, s);
-  append_oname(oid, s);
+  get_cdir(cid, s, len);
+  append_oname(oid, s, len);
 }
 
 int FileStore::open_journal()
@@ -245,20 +247,20 @@ int FileStore::mkfs()
   char cmd[PATH_MAX];
   if (g_conf.filestore_dev) {
     dout(0) << "mounting" << dendl;
-    sprintf(cmd,"mount %s", g_conf.filestore_dev);
+    snprintf(cmd, sizeof(cmd), "mount %s", g_conf.filestore_dev);
     system(cmd);
   }
 
   dout(1) << "mkfs in " << basedir << dendl;
 
   char fn[PATH_MAX];
-  sprintf(fn, "%s/fsid", basedir.c_str());
+  snprintf(fn, sizeof(fn), "%s/fsid", basedir.c_str());
   fsid_fd = ::open(fn, O_CREAT|O_RDWR, 0644);
   if (lock_fsid() < 0)
     return -EBUSY;
 
   // wipe
-  sprintf(cmd, "test -d %s && ( test -d %s/current && rm -r %s/current/* %s/fsid || rm -r %s/* ) ; mkdir -p %s",
+  snprintf(cmd, sizeof(cmd), "test -d %s && ( test -d %s/current && rm -r %s/current/* %s/fsid || rm -r %s/* ) ; mkdir -p %s",
          basedir.c_str(), basedir.c_str(), basedir.c_str(), basedir.c_str(), basedir.c_str(), basedir.c_str());
   
   dout(5) << "wipe: " << cmd << dendl;
@@ -284,7 +286,7 @@ int FileStore::mkfs()
   strcpy(volargs.name, "current");
   int r = ::ioctl(fd, BTRFS_IOC_SUBVOL_CREATE, (unsigned long int)&volargs);
   char current_fn[PATH_MAX];
-  sprintf(current_fn, "%s/current", basedir.c_str());
+  snprintf(current_fn, sizeof(current_fn), "%s/current", basedir.c_str());
   if (r == 0) {
     // yay
     dout(2) << " created btrfs subvol " << current_fn << dendl;
@@ -313,7 +315,7 @@ int FileStore::mkfs()
   if (g_conf.filestore_dev) {
     char cmd[PATH_MAX];
     dout(0) << "umounting" << dendl;
-    sprintf(cmd,"umount %s", g_conf.filestore_dev);
+    snprintf(cmd, sizeof(cmd), "umount %s", g_conf.filestore_dev);
     //system(cmd);
   }
 
@@ -362,7 +364,7 @@ int FileStore::mount()
   if (g_conf.filestore_dev) {
     dout(0) << "mounting" << dendl;
     char cmd[100];
-    sprintf(cmd,"mount %s", g_conf.filestore_dev);
+    snprintf(cmd, sizeof(cmd), "mount %s", g_conf.filestore_dev);
     //system(cmd);
   }
 
@@ -383,7 +385,7 @@ int FileStore::mount()
 
   // get fsid
   char fn[PATH_MAX];
-  sprintf(fn, "%s/fsid", basedir.c_str());
+  snprintf(fn, sizeof(fn), "%s/fsid", basedir.c_str());
 
   // fake attrs? 
   // let's test to see if they work.
@@ -414,7 +416,7 @@ int FileStore::mount()
   dout(10) << "mount fsid is " << fsid << dendl;
 
   // get epoch
-  sprintf(fn, "%s/current/commit_op_seq", basedir.c_str());
+  snprintf(fn, sizeof(fn), "%s/current/commit_op_seq", basedir.c_str());
   op_fd = ::open(fn, O_CREAT|O_RDWR, 0644);
   assert(op_fd >= 0);
   op_seq = 0;
@@ -510,7 +512,7 @@ int FileStore::umount()
   if (g_conf.filestore_dev) {
     char cmd[PATH_MAX];
     dout(0) << "umounting" << dendl;
-    sprintf(cmd,"umount %s", g_conf.filestore_dev);
+    snprintf(cmd, sizeof(cmd), "umount %s", g_conf.filestore_dev);
     //system(cmd);
   }
 
@@ -608,7 +610,7 @@ int FileStore::_transaction_start(__u64 bytes, __u64 ops)
   dout(10) << "transaction_start " << fd << dendl;
 
   char fn[PATH_MAX];
-  sprintf(fn, "%s/current/trans.%d", basedir.c_str(), fd);
+  snprintf(fn, sizeof(fn), "%s/current/trans.%d", basedir.c_str(), fd);
   ::mknod(fn, 0644, 0);
 
   return fd;
@@ -625,7 +627,7 @@ void FileStore::_transaction_finish(int fd)
     return;
 
   char fn[PATH_MAX];
-  sprintf(fn, "%s/current/trans.%d", basedir.c_str(), fd);
+  snprintf(fn, sizeof(fn), "%s/current/trans.%d", basedir.c_str(), fd);
   ::unlink(fn);
   
   dout(10) << "transaction_finish " << fd << dendl;
@@ -777,7 +779,7 @@ bool FileStore::exists(coll_t cid, const sobject_t& oid)
 int FileStore::stat(coll_t cid, const sobject_t& oid, struct stat *st)
 {
   char fn[PATH_MAX];
-  get_coname(cid, oid, fn);
+  get_coname(cid, oid, fn, sizeof(fn));
   int r = ::stat(fn, st);
   dout(10) << "stat " << fn << " = " << r << dendl;
   return r < 0 ? -errno:r;
@@ -787,7 +789,7 @@ int FileStore::read(coll_t cid, const sobject_t& oid,
                     __u64 offset, size_t len,
                     bufferlist& bl) {
   char fn[PATH_MAX];
-  get_coname(cid, oid, fn);
+  get_coname(cid, oid, fn, sizeof(fn));
 
   dout(15) << "read " << fn << " " << offset << "~" << len << dendl;
 
@@ -825,7 +827,7 @@ int FileStore::read(coll_t cid, const sobject_t& oid,
 int FileStore::_remove(coll_t cid, const sobject_t& oid) 
 {
   char fn[PATH_MAX];
-  get_coname(cid, oid, fn);
+  get_coname(cid, oid, fn, sizeof(fn));
   dout(15) << "remove " << fn << dendl;
   int r = ::unlink(fn);
   if (r < 0) r = -errno;
@@ -836,7 +838,7 @@ int FileStore::_remove(coll_t cid, const sobject_t& oid)
 int FileStore::_truncate(coll_t cid, const sobject_t& oid, __u64 size)
 {
   char fn[PATH_MAX];
-  get_coname(cid, oid, fn);
+  get_coname(cid, oid, fn, sizeof(fn));
   dout(15) << "truncate " << fn << " size " << size << dendl;
   int r = ::truncate(fn, size);
   if (r < 0) r = -errno;
@@ -848,7 +850,7 @@ int FileStore::_truncate(coll_t cid, const sobject_t& oid, __u64 size)
 int FileStore::_touch(coll_t cid, const sobject_t& oid)
 {
   char fn[PATH_MAX];
-  get_coname(cid, oid, fn);
+  get_coname(cid, oid, fn, sizeof(fn));
 
   dout(15) << "touch " << fn << dendl;
 
@@ -869,7 +871,7 @@ int FileStore::_write(coll_t cid, const sobject_t& oid,
                      const bufferlist& bl)
 {
   char fn[PATH_MAX];
-  get_coname(cid, oid, fn);
+  get_coname(cid, oid, fn, sizeof(fn));
 
   dout(15) << "write " << fn << " " << offset << "~" << len << dendl;
   int r;
@@ -928,8 +930,8 @@ int FileStore::_zero(coll_t cid, const sobject_t& oid, __u64 offset, size_t len)
 int FileStore::_clone(coll_t cid, const sobject_t& oldoid, const sobject_t& newoid)
 {
   char ofn[PATH_MAX], nfn[PATH_MAX];
-  get_coname(cid, oldoid, ofn);
-  get_coname(cid, newoid, nfn);
+  get_coname(cid, oldoid, ofn, sizeof(ofn));
+  get_coname(cid, newoid, nfn, sizeof(nfn));
 
   dout(15) << "clone " << ofn << " -> " << nfn << dendl;
 
@@ -1010,8 +1012,8 @@ int FileStore::_do_clone_range(int from, int to, __u64 off, __u64 len)
 int FileStore::_clone_range(coll_t cid, const sobject_t& oldoid, const sobject_t& newoid, __u64 off, __u64 len)
 {
   char ofn[PATH_MAX], nfn[PATH_MAX];
-  get_coname(cid, oldoid, ofn);
-  get_coname(cid, newoid, nfn);
+  get_coname(cid, oldoid, ofn, sizeof(ofn));
+  get_coname(cid, newoid, nfn, sizeof(ofn));
 
   dout(15) << "clone_range " << ofn << " -> " << nfn << " " << off << "~" << len << dendl;
 
@@ -1148,7 +1150,7 @@ void FileStore::sync_entry()
       if (btrfs_snap) {
        btrfs_ioctl_vol_args snapargs;
        snapargs.fd = snapdir_fd;
-       sprintf(snapargs.name, COMMIT_SNAP_ITEM, (long long unsigned)cp);
+       snprintf(snapargs.name, sizeof(snapargs.name), COMMIT_SNAP_ITEM, (long long unsigned)cp);
        dout(0) << "taking snap '" << snapargs.name << "'" << dendl;
        int r = ::ioctl(snapargs.fd, BTRFS_IOC_SNAP_CREATE, &snapargs);
        char buf[100];
@@ -1181,7 +1183,7 @@ void FileStore::sync_entry()
        while (snaps.size() > 2) {
          btrfs_ioctl_vol_args snapargs;
          snapargs.fd = snapdir_fd;
-         sprintf(snapargs.name, COMMIT_SNAP_ITEM, (long long unsigned)snaps.front());
+         snprintf(snapargs.name, sizeof(snapargs.name), COMMIT_SNAP_ITEM, (long long unsigned)snaps.front());
          snaps.pop_front();
          dout(0) << "removing snap '" << snapargs.name << "'" << dendl;
          int r = ::ioctl(snapargs.fd, BTRFS_IOC_SNAP_DESTROY, &snapargs);
@@ -1304,10 +1306,10 @@ int FileStore::getattr(coll_t cid, const sobject_t& oid, const char *name,
   if (fake_attrs) return attrs.getattr(cid, oid, name, value, size);
 
   char fn[PATH_MAX];
-  get_coname(cid, oid, fn);
+  get_coname(cid, oid, fn, sizeof(fn));
   dout(15) << "getattr " << fn << " '" << name << "' len " << size << dendl;
   char n[ATTR_MAX];
-  get_attrname(name, n);
+  get_attrname(name, n, ATTR_MAX);
   int r = do_getxattr(fn, n, value, size);
   dout(10) << "getattr " << fn << " '" << name << "' len " << size << " = " << r << dendl;
   return r;
@@ -1318,10 +1320,10 @@ int FileStore::getattr(coll_t cid, const sobject_t& oid, const char *name, buffe
   if (fake_attrs) return attrs.getattr(cid, oid, name, bp);
 
   char fn[PATH_MAX];
-  get_coname(cid, oid, fn);
+  get_coname(cid, oid, fn, sizeof(fn));
   dout(15) << "getattr " << fn << " '" << name << "'" << dendl;
   char n[ATTR_MAX];
-  get_attrname(name, n);
+  get_attrname(name, n, ATTR_MAX);
   int r = _getattr(fn, n, bp);
   dout(10) << "getattr " << fn << " '" << name << "' = " << r << dendl;
   return r;
@@ -1332,7 +1334,7 @@ int FileStore::getattrs(coll_t cid, const sobject_t& oid, map<nstring,bufferptr>
   if (fake_attrs) return attrs.getattrs(cid, oid, aset);
 
   char fn[PATH_MAX];
-  get_coname(cid, oid, fn);
+  get_coname(cid, oid, fn, sizeof(fn));
   dout(15) << "getattrs " << fn << dendl;
   int r = _getattrs(fn, aset, user_only);
   dout(10) << "getattrs " << fn << " = " << r << dendl;
@@ -1349,10 +1351,10 @@ int FileStore::_setattr(coll_t cid, const sobject_t& oid, const char *name,
   if (fake_attrs) return attrs.setattr(cid, oid, name, value, size);
 
   char fn[PATH_MAX];
-  get_coname(cid, oid, fn);
+  get_coname(cid, oid, fn, sizeof(fn));
   dout(15) << "setattr " << fn << " '" << name << "' len " << size << dendl;
   char n[ATTR_MAX];
-  get_attrname(name, n);
+  get_attrname(name, n, ATTR_MAX);
   int r = do_setxattr(fn, n, value, size);
   dout(10) << "setattr " << fn << " '" << name << "' len " << size << " = " << r << dendl;
   return r;
@@ -1363,14 +1365,14 @@ int FileStore::_setattrs(coll_t cid, const sobject_t& oid, map<nstring,bufferptr
   if (fake_attrs) return attrs.setattrs(cid, oid, aset);
 
   char fn[PATH_MAX];
-  get_coname(cid, oid, fn);
+  get_coname(cid, oid, fn, sizeof(fn));
   dout(15) << "setattrs " << fn << dendl;
   int r = 0;
   for (map<nstring,bufferptr>::iterator p = aset.begin();
        p != aset.end();
        ++p) {
     char n[ATTR_MAX];
-    get_attrname(p->first.c_str(), n);
+    get_attrname(p->first.c_str(), n, ATTR_MAX);
     const char *val;
     if (p->second.length())
       val = p->second.c_str();
@@ -1393,10 +1395,10 @@ int FileStore::_rmattr(coll_t cid, const sobject_t& oid, const char *name)
   if (fake_attrs) return attrs.rmattr(cid, oid, name);
 
   char fn[PATH_MAX];
-  get_coname(cid, oid, fn);
+  get_coname(cid, oid, fn, sizeof(fn));
   dout(15) << "rmattr " << fn << " '" << name << "'" << dendl;
   char n[ATTR_MAX];
-  get_attrname(name, n);
+  get_attrname(name, n, ATTR_MAX);
   int r = do_removexattr(fn, n);
   dout(10) << "rmattr " << fn << " '" << name << "' = " << r << dendl;
   return r;
@@ -1407,7 +1409,7 @@ int FileStore::_rmattrs(coll_t cid, const sobject_t& oid)
   //if (fake_attrs) return attrs.rmattrs(cid, oid);
 
   char fn[PATH_MAX];
-  get_coname(cid, oid, fn);
+  get_coname(cid, oid, fn, sizeof(fn));
 
   dout(15) << "rmattrs " << fn << dendl;
 
@@ -1416,7 +1418,7 @@ int FileStore::_rmattrs(coll_t cid, const sobject_t& oid)
   if (r >= 0) {
     for (map<nstring,bufferptr>::iterator p = aset.begin(); p != aset.end(); p++) {
       char n[ATTR_MAX];
-      get_attrname(p->first.c_str(), n);
+      get_attrname(p->first.c_str(), n, ATTR_MAX);
       r = do_removexattr(fn, n);
       if (r < 0)
        break;
@@ -1436,10 +1438,10 @@ int FileStore::collection_getattr(coll_t c, const char *name,
   if (fake_attrs) return attrs.collection_getattr(c, name, value, size);
 
   char fn[PATH_MAX];
-  get_cdir(c, fn);
+  get_cdir(c, fn, sizeof(fn));
   dout(15) << "collection_getattr " << fn << " '" << name << "' len " << size << dendl;
   char n[PATH_MAX];
-  get_attrname(name, n);
+  get_attrname(name, n, PATH_MAX);
   int r = do_getxattr(fn, n, value, size);   
   dout(10) << "collection_getattr " << fn << " '" << name << "' len " << size << " = " << r << dendl;
   return r;
@@ -1450,10 +1452,10 @@ int FileStore::collection_getattr(coll_t c, const char *name, bufferlist& bl)
   if (fake_attrs) return attrs.collection_getattr(c, name, bl);
 
   char fn[PATH_MAX];
-  get_cdir(c, fn);
+  get_cdir(c, fn, sizeof(fn));
   dout(15) << "collection_getattr " << fn << " '" << name << "'" << dendl;
   char n[PATH_MAX];
-  get_attrname(name, n);
+  get_attrname(name, n, PATH_MAX);
   
   buffer::ptr bp;
   int r = _getattr(fn, n, bp);
@@ -1467,7 +1469,7 @@ int FileStore::collection_getattrs(coll_t cid, map<nstring,bufferptr>& aset)
   if (fake_attrs) return attrs.collection_getattrs(cid, aset);
 
   char fn[PATH_MAX];
-  get_cdir(cid, fn);
+  get_cdir(cid, fn, sizeof(fn));
   dout(10) << "collection_getattrs " << fn << dendl;
   int r = _getattrs(fn, aset);
   dout(10) << "collection_getattrs " << fn << " = " << r << dendl;
@@ -1481,10 +1483,10 @@ int FileStore::_collection_setattr(coll_t c, const char *name,
   if (fake_attrs) return attrs.collection_setattr(c, name, value, size);
 
   char fn[PATH_MAX];
-  get_cdir(c, fn);
+  get_cdir(c, fn, sizeof(fn));
   dout(10) << "collection_setattr " << fn << " '" << name << "' len " << size << dendl;
   char n[PATH_MAX];
-  get_attrname(name, n);
+  get_attrname(name, n, PATH_MAX);
   int r = do_setxattr(fn, n, value, size);
   dout(10) << "collection_setattr " << fn << " '" << name << "' len " << size << " = " << r << dendl;
   return r;
@@ -1495,10 +1497,10 @@ int FileStore::_collection_rmattr(coll_t c, const char *name)
   if (fake_attrs) return attrs.collection_rmattr(c, name);
 
   char fn[PATH_MAX];
-  get_cdir(c, fn);
+  get_cdir(c, fn, sizeof(fn));
   dout(15) << "collection_rmattr " << fn << dendl;
   char n[PATH_MAX];
-  get_attrname(name, n);
+  get_attrname(name, n, PATH_MAX);
   int r = do_removexattr(fn, n);
   dout(10) << "collection_rmattr " << fn << " = " << r << dendl;
   return r;
@@ -1510,14 +1512,14 @@ int FileStore::_collection_setattrs(coll_t cid, map<nstring,bufferptr>& aset)
   if (fake_attrs) return attrs.collection_setattrs(cid, aset);
 
   char fn[PATH_MAX];
-  get_cdir(cid, fn);
+  get_cdir(cid, fn, sizeof(fn));
   dout(15) << "collection_setattrs " << fn << dendl;
   int r = 0;
   for (map<nstring,bufferptr>::iterator p = aset.begin();
        p != aset.end();
        ++p) {
     char n[PATH_MAX];
-    get_attrname(p->first.c_str(), n);
+    get_attrname(p->first.c_str(), n, PATH_MAX);
     r = do_setxattr(fn, n, p->second.c_str(), p->second.length());
     if (r < 0) break;
   }
@@ -1537,7 +1539,7 @@ int FileStore::list_collections(vector<coll_t>& ls)
   dout(10) << "list_collections" << dendl;
 
   char fn[PATH_MAX];
-  sprintf(fn, "%s/current", basedir.c_str());
+  snprintf(fn, sizeof(fn), "%s/current", basedir.c_str());
 
   DIR *dir = ::opendir(fn);
   if (!dir)
@@ -1561,7 +1563,7 @@ int FileStore::collection_stat(coll_t c, struct stat *st)
   if (fake_collections) return collections.collection_stat(c, st);
 
   char fn[PATH_MAX];
-  get_cdir(c, fn);
+  get_cdir(c, fn, sizeof(fn));
   dout(15) << "collection_stat " << fn << dendl;
   int r = ::stat(fn, st);
   if (r < 0) r = -errno;
@@ -1582,7 +1584,7 @@ bool FileStore::collection_empty(coll_t c)
   if (fake_collections) return collections.collection_empty(c);
 
   char fn[PATH_MAX];
-  get_cdir(c, fn);
+  get_cdir(c, fn, sizeof(fn));
   dout(15) << "collection_empty " << fn << dendl;
 
   DIR *dir = ::opendir(fn);
@@ -1615,7 +1617,7 @@ int FileStore::collection_list_partial(coll_t c, snapid_t seq, vector<sobject_t>
   if (fake_collections) return collections.collection_list(c, ls);
 
   char fn[PATH_MAX];
-  get_cdir(c, fn);
+  get_cdir(c, fn, sizeof(fn));
 
   DIR *dir = NULL;
   struct dirent sde, *de;
@@ -1676,7 +1678,7 @@ int FileStore::collection_list(coll_t c, vector<sobject_t>& ls)
   if (fake_collections) return collections.collection_list(c, ls);
 
   char fn[PATH_MAX];
-  get_cdir(c, fn);
+  get_cdir(c, fn, sizeof(fn));
   dout(10) << "collection_list " << fn << dendl;
 
   DIR *dir = ::opendir(fn);
@@ -1722,7 +1724,7 @@ int FileStore::_create_collection(coll_t c)
   if (fake_collections) return collections.create_collection(c);
   
   char fn[PATH_MAX];
-  get_cdir(c, fn);
+  get_cdir(c, fn, sizeof(fn));
   dout(15) << "create_collection " << fn << dendl;
   int r = ::mkdir(fn, 0755);
   if (r < 0) r = -errno;
@@ -1735,11 +1737,11 @@ int FileStore::_destroy_collection(coll_t c)
   if (fake_collections) return collections.destroy_collection(c);
 
   char fn[PATH_MAX];
-  get_cdir(c, fn);
+  get_cdir(c, fn, sizeof(fn));
   dout(15) << "_destroy_collection " << fn << dendl;
   int r = ::rmdir(fn);
   //char cmd[PATH_MAX];
-  //sprintf(cmd, "test -d %s && rm -r %s", fn, fn);
+  //snprintf(cmd, sizeof(cmd), "test -d %s && rm -r %s", fn, fn);
   //system(cmd);
   if (r < 0) r = -errno;
   dout(10) << "_destroy_collection " << fn << " = " << r << dendl;
@@ -1752,9 +1754,9 @@ int FileStore::_collection_add(coll_t c, coll_t cid, const sobject_t& o)
   if (fake_collections) return collections.collection_add(c, o);
 
   char cof[PATH_MAX];
-  get_coname(c, o, cof);
+  get_coname(c, o, cof, sizeof(cof));
   char of[PATH_MAX];
-  get_coname(cid, o, of);
+  get_coname(cid, o, of, sizeof(of));
   dout(15) << "collection_add " << cof << " " << of << dendl;
   int r = ::link(of, cof);
   if (r < 0) r = -errno;
@@ -1767,7 +1769,7 @@ int FileStore::_collection_remove(coll_t c, const sobject_t& o)
   if (fake_collections) return collections.collection_remove(c, o);
 
   char cof[PATH_MAX];
-  get_coname(c, o, cof);
+  get_coname(c, o, cof, sizeof(cof));
   dout(15) << "collection_remove " << cof << dendl;
   int r = ::unlink(cof);
   if (r < 0) r = -errno;
index 2c0d02d41bce85135726ab1710ff49f5c32eeaab..fc1d43e66422eae887df9831b57c2840d4a1e453 100644 (file)
@@ -54,10 +54,10 @@ class FileStore : public JournalingObjectStore {
   bool fake_collections;
   
   // helper fns
-  void append_oname(const sobject_t &oid, char *s);
+  void append_oname(const sobject_t &oid, char *s, int len);
   //void get_oname(sobject_t oid, char *s);
-  void get_cdir(coll_t cid, char *s);
-  void get_coname(coll_t cid, const sobject_t& oid, char *s);
+  void get_cdir(coll_t cid, char *s, int len);
+  void get_coname(coll_t cid, const sobject_t& oid, char *s, int len);
   bool parse_object(char *s, sobject_t& o);
   bool parse_coll(char *s, coll_t& c);
   
index 7e4502962525d8d87ea0b3102b263de03a51df25..effcb1281f8c1cb7ddeb2b28e1fc29bfab941f89 100644 (file)
@@ -331,7 +331,7 @@ void Ager::load_freelist()
 {
   generic_dout(1) << "save_freelist " << el << dendl;
   char s[100];
-  sprintf(s, "ebofs.freelist.%d", el);
+  snprintf(s, sizeof(s), "ebofs.freelist.%d", el);
   bufferlist bl;
   ((Ebofs*)store)->_export_freelist(bl);
   ::unlink(s);
index 0784fcc6e310589aa16577e117c58c883f250054..ab70ed6c55b1ea810fb9838734d1b3a0deeae0c1 100644 (file)
@@ -374,7 +374,7 @@ int OSD::init()
   // log
   static LogType osd_logtype(l_osd_first, l_osd_last);
   char name[80];
-  sprintf(name, "osd%d", whoami);
+  snprintf(name, sizeof(name), "osd%d", whoami);
   logger = new Logger(name, (LogType*)&osd_logtype);
   osd_logtype.add_set(l_osd_opq, "opq");
   osd_logtype.add_inc(l_osd_op, "op");
index 54d6d44625bd0c5fe01c53981e5b487e49ca6919..dd9b20d97acd31f54630294e0718075999708c5b 100644 (file)
@@ -176,7 +176,7 @@ void OSDMap::build_simple_crush_map(CrushWrapper& crush, map<int, const char*>&
       dout(20) << "added domain bucket i " << ritems[i] << " of size " << j << dendl;
 
       char bname[10];
-      sprintf(bname, "dom%d", i);
+      snprintf(bname, sizeof(bname), "dom%d", i);
       crush.set_item_name(ritems[i], bname);
     }
     
index 3b920ffc65361102b8d960d28a020b85960497e4..e4b690c313ee5254bd152520cba3c471b8eebd53 100644 (file)
@@ -133,11 +133,11 @@ struct pg_t {
     return coll_t(u.pg64, sn);
     }*/
 
-  int print(char *o) {
+  int print(char *o, int maxlen) {
     if (preferred() >= 0)
-      return sprintf(o, "%d.%xp%d", pool(), ps(), preferred());
+      return snprintf(o, maxlen, "%d.%xp%d", pool(), ps(), preferred());
     else
-      return sprintf(o, "%d.%x", pool(), ps());
+      return snprintf(o, maxlen, "%d.%x", pool(), ps());
   }
   bool parse(const char *s) {
     int pool;
@@ -235,14 +235,14 @@ struct coll_t {
     return coll_t(p, s);
   }
 
-  int print(char *o) {
+  int print(char *o, int maxlen) {
     if (pgid == pg_t() && snap == 0)
-      return sprintf(o, "meta");
-    int len = pgid.print(o);
+      return snprintf(o, maxlen, "meta");
+    int len = pgid.print(o, maxlen);
     if (snap != CEPH_NOSNAP)
-      len += sprintf(o+len, "_%llx", (long long unsigned)snap);
+      len += snprintf(o + len, maxlen - len, "_%llx", (long long unsigned)snap);
     else {
-      strcat(o+len, "_head");
+      strncat(o + len, "_head", maxlen - len);
       len += 5;
     }
     return len;
index c5009f65a819720a31b6e5d6e525d5281d849322..4a44daa9618368a3aa2554d3159f2ff3dcfbf65e 100644 (file)
@@ -33,7 +33,7 @@ int main(int argc, char **argv)
   for (int f = 0; f < 50000; f++) {  // files
     for (int b = 0; b < 4; b++) {   // blocks
       char foo[20];
-      sprintf(foo, "%d.%d", f, b);
+      snprintf(foo, sizeof(foo), "%d.%d", f, b);
       object_t oid(foo);
       ceph_object_layout l = osdmap.make_object_layout(oid, 0);
        //osdmap.file_to_object_layout(oid, g_default_file_layout);