Index: user/drbdsetup.c =================================================================== --- user/drbdsetup.c (revision 2659) +++ user/drbdsetup.c (working copy) @@ -1226,7 +1226,8 @@ while((dde=readdir(device_dir))) { - snprintf(dev_name,50,"%s/%s",dir,dde->d_name); + if(snprintf(dev_name,50,"%s/%s",dir,dde->d_name)>=50) + continue; if(stat(dev_name,&sb)) continue; if(S_ISBLK(sb.st_mode)) @@ -1244,7 +1245,8 @@ while((dde=readdir(device_dir))) { - snprintf(dev_name,50,"%s/%s",dir,dde->d_name); + if(snprintf(dev_name,50,"%s/%s",dir,dde->d_name)>=50) + continue; if(stat(dev_name,&sb)) continue; if(!strcmp(dde->d_name,".")) continue; @@ -1257,11 +1259,8 @@ { char subdir[50]; - if(snprintf(subdir,50,"%s/%s",dir,dde->d_name)==49) - { /* recursion is too deep */ - strcpy(dev_name,"can not guess name"); - return dev_name; - } + if(snprintf(subdir,50,"%s/%s",dir,dde->d_name)>=50) + continue; if(guess_dev_name(subdir,major,minor)) return dev_name; }