Print this page
5111 smb_common_rename uses uninitialized variable
Reviewed by: Gordon Ross <gwr@nexenta.com>


 330 
 331         /* Check if attempting to rename a stream - not yet supported */
 332         rc = smb_rename_check_stream(src_fqi, dst_fqi);
 333         if (rc != 0)
 334                 return (rc);
 335 
 336         /* The source node may already have been provided */
 337         if (src_fqi->fq_fnode) {
 338                 smb_node_start_crit(src_fqi->fq_fnode, RW_READER);
 339                 smb_node_ref(src_fqi->fq_fnode);
 340                 smb_node_ref(src_fqi->fq_dnode);
 341         } else {
 342                 /* lookup and validate src node */
 343                 rc = smb_rename_lookup_src(sr);
 344                 if (rc != 0)
 345                         return (rc);
 346         }
 347 
 348         src_fnode = src_fqi->fq_fnode;
 349         src_dnode = src_fqi->fq_dnode;

 350 
 351         /* Find destination dnode and last_comp */
 352         if (dst_fqi->fq_dnode) {
 353                 smb_node_ref(dst_fqi->fq_dnode);
 354         } else {
 355                 tnode = sr->tid_tree->t_snode;
 356                 rc = smb_pathname_reduce(sr, sr->user_cr, path, tnode, tnode,
 357                     &dst_fqi->fq_dnode, dst_fqi->fq_last_comp);
 358                 if (rc != 0) {
 359                         smb_rename_release_src(sr);
 360                         return (rc);
 361                 }
 362         }
 363 
 364         dst_dnode = dst_fqi->fq_dnode;
 365         new_name = dst_fqi->fq_last_comp;
 366 
 367         /* If exact name match in same directory, we're done */
 368         if ((src_dnode == dst_dnode) &&
 369             (strcmp(src_fnode->od_name, new_name) == 0)) {
 370                 smb_rename_release_src(sr);
 371                 smb_node_release(dst_dnode);
 372                 return (0);
 373         }
 374 
 375         /* Lookup destination node */




 330 
 331         /* Check if attempting to rename a stream - not yet supported */
 332         rc = smb_rename_check_stream(src_fqi, dst_fqi);
 333         if (rc != 0)
 334                 return (rc);
 335 
 336         /* The source node may already have been provided */
 337         if (src_fqi->fq_fnode) {
 338                 smb_node_start_crit(src_fqi->fq_fnode, RW_READER);
 339                 smb_node_ref(src_fqi->fq_fnode);
 340                 smb_node_ref(src_fqi->fq_dnode);
 341         } else {
 342                 /* lookup and validate src node */
 343                 rc = smb_rename_lookup_src(sr);
 344                 if (rc != 0)
 345                         return (rc);
 346         }
 347 
 348         src_fnode = src_fqi->fq_fnode;
 349         src_dnode = src_fqi->fq_dnode;
 350         tnode = sr->tid_tree->t_snode;
 351 
 352         /* Find destination dnode and last_comp */
 353         if (dst_fqi->fq_dnode) {
 354                 smb_node_ref(dst_fqi->fq_dnode);
 355         } else {

 356                 rc = smb_pathname_reduce(sr, sr->user_cr, path, tnode, tnode,
 357                     &dst_fqi->fq_dnode, dst_fqi->fq_last_comp);
 358                 if (rc != 0) {
 359                         smb_rename_release_src(sr);
 360                         return (rc);
 361                 }
 362         }
 363 
 364         dst_dnode = dst_fqi->fq_dnode;
 365         new_name = dst_fqi->fq_last_comp;
 366 
 367         /* If exact name match in same directory, we're done */
 368         if ((src_dnode == dst_dnode) &&
 369             (strcmp(src_fnode->od_name, new_name) == 0)) {
 370                 smb_rename_release_src(sr);
 371                 smb_node_release(dst_dnode);
 372                 return (0);
 373         }
 374 
 375         /* Lookup destination node */