Fixed issue: 293

1) Command line argument bucket: causes segv(Issue: 293)
    If it specifies the bucket name which is terminated ":", s3fs run and crush(segv).
    This bug is fixed.




git-svn-id: http://s3fs.googlecode.com/svn/trunk@409 df820570-a93a-0410-bd06-b72b767a4274
This commit is contained in:
ggtakec@gmail.com 2013-04-15 19:47:09 +00:00
parent a632af8f90
commit cec9bc5f3a

View File

@ -3838,17 +3838,20 @@ static int my_fuse_opt_proc(void *data, const char *arg, int key, struct fuse_ar
// the first NONOPT option is the bucket name // the first NONOPT option is the bucket name
if(bucket.size() == 0) { if(bucket.size() == 0) {
// extract remote mount path // extract remote mount path
char *bucket_name = (char *) arg; char *bucket_name = (char*)arg;
if(strstr(arg, ":")) { if(strstr(arg, ":")){
bucket = strtok(bucket_name, ":"); bucket = strtok(bucket_name, ":");
mount_prefix = strtok(NULL, ":"); char* pmount_prefix = strtok(NULL, ":");
// remove trailing slash if(pmount_prefix){
if(mount_prefix.at(mount_prefix.size() - 1) == '/') mount_prefix = pmount_prefix;
mount_prefix = mount_prefix.substr(0, mount_prefix.size() - 1); // remove trailing slash
} else { if(mount_prefix.at(mount_prefix.size() - 1) == '/'){
mount_prefix = mount_prefix.substr(0, mount_prefix.size() - 1);
}
}
}else{
bucket = arg; bucket = arg;
} }
return 0; return 0;
} }