Bug 16039

Summary: chown misinterprets "." as group separator
Product: Busybox Reporter: Matthew Slowe <foo>
Component: OtherAssignee: unassigned
Status: NEW ---    
Severity: normal CC: busybox-cvs
Priority: P5    
Version: 1.36.x   
Target Milestone: ---   
Hardware: All   
OS: Linux   
Host: Target:
Build:
Attachments: possible fix

Description Matthew Slowe 2024-04-17 15:57:16 UTC
Created attachment 9736 [details]
possible fix

In uidgid_get.c there is a parse_chown_usergroup_or_die() function which continues to implement a very old BSD(?) notation of user.group as well as user:group -- the code assumes that the first "." is a separater.

I don't know what else calls it but, for the chown applet, the implementation precludes support of users with "."s in (such as "test.test") when invoked with "chown test.test file":

     # chown test.test /tmp/test
     chown: unknown user/group test:test

https://github.com/mirror/busybox/blame/master/libpwdgrp/uidgid_get.c#L96

There is no reference to this interpretation in the code comment of the usage string:

    Usage: chown [-RhLHPcvf]... USER[:[GRP]] FILE...

Given that this notation appears to have been deprecated back in 2001, is now the time to remove this?

Possible patch to fix attached