Issue
When a custom configuration file is supplied via --config
to auth login
, and reading credentials from the given file doesn’t succeed, an attempt is made to create the supplied directory path. This path is constructed by stripping a fixed ”config” (without a directory separator) from the user-supplied path.
When the custom configuration file doesn’t exist, this results in an unnecessary mkdir
when the given filename ends with the hardcoded value of ”config” (case 1 below), or that plus a ”is a directory” failure when it doesn’t (case 2).
If the custom configuration file does exist, the useless mkdir
is still triggered when the given filename ends with the hardcoded value of ”config” (case 3), or a ”not a directory” failure when it doesn’t (case 4).
Cause
The problematic mkdir
call is issued here. I have no experience in Go, but instead of the TrimSuffix()
call nested on that line, I think there should be a Go equivalent of a dirname
instead, using the user-supplied path as parameter, and without referencing the value of configFileName
(the source of the hardcoded ”config”).
Steps to reproduce
Case 1
A useless, empty mmctl_
directory gets created:
# rm -rf /tmp/mmctl_test/
# sudo -u mattermost mkdir /tmp/mmctl_test/
# /usr/bin/sudo -u mattermost /usr/local/bin/mmctl auth --quiet login https://example.com --name example --access-token 123456890abcdefghijklmnopq --config /tmp/mmctl_test/mmctl_config
credentials for "example": "Personal Access Token@https://example.com" stored
# ls -lRa /tmp/mmctl_test/
/tmp/mmctl_test/:
yhteensä 24
drwxrwxr-x 3 mattermost mattermost 4096 tammi 30 15:27 .
drwxrwxrwt 23 root root 12288 tammi 30 15:27 ..
drwx------ 2 mattermost mattermost 4096 tammi 30 15:27 mmctl_
-rw------- 1 mattermost mattermost 244 tammi 30 15:27 mmctl_config
/tmp/mmctl_test/mmctl_:
yhteensä 8
drwx------ 2 mattermost mattermost 4096 tammi 30 15:27 .
drwxrwxr-x 3 mattermost mattermost 4096 tammi 30 15:27 ..
Case 2
Saving the credentials fails:
# rm -rf /tmp/mmctl_test/
# sudo -u mattermost mkdir /tmp/mmctl_test/
# /usr/bin/sudo -u mattermost /usr/local/bin/mmctl auth --quiet login https://example.com--name example --access-token 123456890abcdefghijklmnopq --config /tmp/mmctl_test/test
Error: cannot save the credentials: open /tmp/mmctl_test/test: is a directory
# ls -lRa /tmp/mmctl_test/
/tmp/mmctl_test/:
yhteensä 20
drwxrwxr-x 3 mattermost mattermost 4096 tammi 30 15:31 .
drwxrwxrwt 23 root root 12288 tammi 30 15:31 ..
drwx------ 2 mattermost mattermost 4096 tammi 30 15:31 test
/tmp/mmctl_test/test:
yhteensä 8
drwx------ 2 mattermost mattermost 4096 tammi 30 15:31 .
drwxrwxr-x 3 mattermost mattermost 4096 tammi 30 15:31 ..
Case 3
A useless, empty test_
directory is created:
# rm -rf /tmp/mmctl_test/
# sudo -u mattermost mkdir /tmp/mmctl_test/
# sudo -u mattermost touch /tmp/mmctl_test/test_config
# /usr/bin/sudo -u mattermost /usr/local/bin/mmctl auth login https://example.com --name example --access-token 123456890abcdefghijklmnopq --config /tmp/mmctl_test/test_config
credentials for "example": "Personal Access Token@https://example.com" stored
# ls -lRa /tmp/mmctl_test/
/tmp/mmctl_test/:
yhteensä 24
drwxrwxr-x 3 mattermost mattermost 4096 tammi 30 15:58 .
drwxrwxrwt 22 root root 12288 tammi 30 15:58 ..
drwx------ 2 mattermost mattermost 4096 tammi 30 15:58 test_
-rw-rw-r-- 1 mattermost mattermost 244 tammi 30 15:58 test_config
/tmp/mmctl_test/test_:
yhteensä 8
drwx------ 2 mattermost mattermost 4096 tammi 30 15:58 .
drwxrwxr-x 3 mattermost mattermost 4096 tammi 30 15:58 ..
Case 4
Saving the credentials again fails:
# rm -rf /tmp/mmctl_test/
# sudo -u mattermost mkdir /tmp/mmctl_test/
# sudo -u mattermost touch /tmp/mmctl_test/test
# /usr/bin/sudo -u mattermost /usr/local/bin/mmctl auth login https://example.com --name example --access-token 123456890abcdefghijklmnopq --config /tmp/mmctl_test/test
Error: mkdir /tmp/mmctl_test/test: not a directory
# ls -lRa /tmp/mmctl_test/
/tmp/mmctl_test/:
yhteensä 16
drwxrwxr-x 2 mattermost mattermost 4096 tammi 30 16:00 .
drwxrwxrwt 22 root root 12288 tammi 30 16:00 ..
-rw-rw-r-- 1 mattermost mattermost 0 tammi 30 16:00 test