** Description changed:
+ [Impact]
+
+ when authenticate AD, with bask-completion, it's very slow.
+
+ [Testcase]
+
+ Below command should output nothing.
+
+ root@ubuntu1404:~# strace bash -c ". /etc/bash_completion; quote_readline
'/something'; echo" 2>&1 | grep /etc/passwd
+ root@ubuntu1404:~# strace bash -c ". /etc/bash_completion; quote_readline
'/something'; echo" 2>&1 | grep sss
+
+ but we have something
+
+ root@ubuntu1404:~# strace bash -c ". /etc/bash_completion; quote_readline
'/something'; echo" 2>&1 | grep /etc/passwd
+ open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
+ root@ubuntu1404:~# strace bash -c ". /etc/bash_completion; quote_readline
'/something'; echo" 2>&1 | grep sss
+ open("/lib/i386-linux-gnu/libnss_sss.so.2", O_RDONLY|O_CLOEXEC) = 3
+ open("/var/lib/sss/mc/passwd", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
+ connect(4, {sa_family=AF_LOCAL, sun_path="/var/lib/sss/pipes/nss"}, 110) = 0
+
+ [Regeression Potential]
+
+ [Other Info]
+
+ This is not from upstream, no need to fix for upstream.
+ But fix code seems harmless. just specify special character ~
+
+ // The original description
+
1) The release of Ubuntu you are using, via 'lsb_release -rd' or System ->
About Ubuntu
root@ubuntu1404:~# lsb_release -rd
Description: Ubuntu 14.04.1 LTS
Release: 14.04
2) The version of the package you are using, via 'apt-cache policy pkgname'
or by checking in Software Center
root@ubuntu1404:~# apt-cache policy bash-completion
bash-completion:
- Installed: 1:2.1-4
- Candidate: 1:2.1-4
- Version table:
- *** 1:2.1-4 0
- 500 http://se.archive.ubuntu.com/ubuntu/ trusty/main i386 Packages
- 100 /var/lib/dpkg/status
+ Installed: 1:2.1-4
+ Candidate: 1:2.1-4
+ Version table:
+ *** 1:2.1-4 0
+ 500 http://se.archive.ubuntu.com/ubuntu/ trusty/main i386 Packages
+ 100 /var/lib/dpkg/status
3) What you expected to happen
When I use bash-completion it should not read the /etc/passwd file or contact
the Active directory.
It is very hard to see this problem unless you run this on a machine with
slow authentication... but the commands below will show if the /etc/passwd or
sssd are used by bash_completion or not:
root@ubuntu1404:~# strace bash -c ". /etc/bash_completion; quote_readline
'/something'; echo" 2>&1 | grep /etc/passwd
root@ubuntu1404:~# strace bash -c ". /etc/bash_completion; quote_readline
'/something'; echo" 2>&1 | grep sss
When the ~ are escaped on line 545 and 547 in /usr/share/bash-
completion/bash_completion then bash_completion works as expected.
4) What happened instead
Every time you use tab-completion in bash on ubuntu 14.04 it will read
the /etc/passwd file and if sssd are installed and configured for Active
Directory authentication it will talk to sssd... and this can be slow in
some environments.
root@ubuntu1404:~# strace bash -c ". /etc/bash_completion; quote_readline
'/something'; echo" 2>&1 | grep /etc/passwd
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
root@ubuntu1404:~# strace bash -c ". /etc/bash_completion; quote_readline
'/something'; echo" 2>&1 | grep sss
open("/lib/i386-linux-gnu/libnss_sss.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/var/lib/sss/mc/passwd", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
connect(4, {sa_family=AF_LOCAL, sun_path="/var/lib/sss/pipes/nss"}, 110) = 0
I have made a small patch for this problem and I have not found any side
effects:
--- /usr/share/bash-completion/bash_completion.orig 2014-11-06
10:36:14.981888369 +0100
+++ /usr/share/bash-completion/bash_completion 2014-11-06 10:36:25.142070963
+0100
@@ -542,9 +542,9 @@
- elif [[ $1 == \'* ]]; then
- # Leave out first character
- printf -v $2 %s "${1:1}"
+ elif [[ $1 == \'* ]]; then
+ # Leave out first character
+ printf -v $2 %s "${1:1}"
- elif [[ $1 == ~* ]]; then
+ elif [[ $1 == \~* ]]; then
- # avoid escaping first ~
+ # avoid escaping first ~
- printf -v $2 ~%q "${1:1}"
+ printf -v $2 \~%q "${1:1}"
- else
- printf -v $2 %q "$1"
- fi
+ else
+ printf -v $2 %q "$1"
+ fi
** Changed in: bash-completion (Ubuntu)
Status: Confirmed => In Progress
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1390061
Title:
bash-completion tilde expansion every time
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/bash-completion/+bug/1390061/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs