@@ -1485,14 +1485,11 @@ static int tree_content_set(
14851485 unsigned int i , n ;
14861486 struct tree_entry * e ;
14871487
1488- slash1 = strchr (p , '/' );
1489- if (slash1 )
1490- n = slash1 - p ;
1491- else
1492- n = strlen (p );
1488+ slash1 = strchrnul (p , '/' );
1489+ n = slash1 - p ;
14931490 if (!n )
14941491 die ("Empty path component found in input" );
1495- if (!slash1 && !S_ISDIR (mode ) && subtree )
1492+ if (!* slash1 && !S_ISDIR (mode ) && subtree )
14961493 die ("Non-directories cannot have subtrees" );
14971494
14981495 if (!root -> tree )
@@ -1501,7 +1498,7 @@ static int tree_content_set(
15011498 for (i = 0 ; i < t -> entry_count ; i ++ ) {
15021499 e = t -> entries [i ];
15031500 if (e -> name -> str_len == n && !strncmp_icase (p , e -> name -> str_dat , n )) {
1504- if (!slash1 ) {
1501+ if (!* slash1 ) {
15051502 if (!S_ISDIR (mode )
15061503 && e -> versions [1 ].mode == mode
15071504 && !hashcmp (e -> versions [1 ].sha1 , sha1 ))
@@ -1552,7 +1549,7 @@ static int tree_content_set(
15521549 e -> versions [0 ].mode = 0 ;
15531550 hashclr (e -> versions [0 ].sha1 );
15541551 t -> entries [t -> entry_count ++ ] = e ;
1555- if (slash1 ) {
1552+ if (* slash1 ) {
15561553 e -> tree = new_tree_content (8 );
15571554 e -> versions [1 ].mode = S_IFDIR ;
15581555 tree_content_set (e , slash1 + 1 , sha1 , mode , subtree );
@@ -1576,11 +1573,8 @@ static int tree_content_remove(
15761573 unsigned int i , n ;
15771574 struct tree_entry * e ;
15781575
1579- slash1 = strchr (p , '/' );
1580- if (slash1 )
1581- n = slash1 - p ;
1582- else
1583- n = strlen (p );
1576+ slash1 = strchrnul (p , '/' );
1577+ n = slash1 - p ;
15841578
15851579 if (!root -> tree )
15861580 load_tree (root );
@@ -1594,15 +1588,15 @@ static int tree_content_remove(
15941588 for (i = 0 ; i < t -> entry_count ; i ++ ) {
15951589 e = t -> entries [i ];
15961590 if (e -> name -> str_len == n && !strncmp_icase (p , e -> name -> str_dat , n )) {
1597- if (slash1 && !S_ISDIR (e -> versions [1 ].mode ))
1591+ if (* slash1 && !S_ISDIR (e -> versions [1 ].mode ))
15981592 /*
15991593 * If p names a file in some subdirectory, and a
16001594 * file or symlink matching the name of the
16011595 * parent directory of p exists, then p cannot
16021596 * exist and need not be deleted.
16031597 */
16041598 return 1 ;
1605- if (!slash1 || !S_ISDIR (e -> versions [1 ].mode ))
1599+ if (!* slash1 || !S_ISDIR (e -> versions [1 ].mode ))
16061600 goto del_entry ;
16071601 if (!e -> tree )
16081602 load_tree (e );
@@ -1644,11 +1638,8 @@ static int tree_content_get(
16441638 unsigned int i , n ;
16451639 struct tree_entry * e ;
16461640
1647- slash1 = strchr (p , '/' );
1648- if (slash1 )
1649- n = slash1 - p ;
1650- else
1651- n = strlen (p );
1641+ slash1 = strchrnul (p , '/' );
1642+ n = slash1 - p ;
16521643 if (!n && !allow_root )
16531644 die ("Empty path component found in input" );
16541645
@@ -1664,7 +1655,7 @@ static int tree_content_get(
16641655 for (i = 0 ; i < t -> entry_count ; i ++ ) {
16651656 e = t -> entries [i ];
16661657 if (e -> name -> str_len == n && !strncmp_icase (p , e -> name -> str_dat , n )) {
1667- if (!slash1 )
1658+ if (!* slash1 )
16681659 goto found_entry ;
16691660 if (!S_ISDIR (e -> versions [1 ].mode ))
16701661 return 0 ;
0 commit comments