Add multi special character password handling to collect
Add handling for passwords that have duplicate special characters. For instance without this update, passing collect the following sudo password would fail while with this update it succeeds. [[Pa$$word123]] The following characters are verified to require escapes. 1. [ and ] (square brackets) [$$Copper1$$] … escaped by collect 2. ? (question mark) ?Copper123? … escaped by collect 3. $ (dollar sign) $Copper123$ … escaped by collect 4. " (double quotes) “<Mooser123>” … escaped by collect 5. \ (backslash) \Mooser1\ … escaped by collect Note that the backslash '\' must be escaped by the user. For instance to enter a password with backslashes that reads like this \Copper123\ it must be escaped going in like this \\Copper123\\ The following special characters are verified to not require escapes. 6. & (ampersand) &Copper123& … no escape needed 7. ( and ) (parentheses) (Duffy123) … no escape needed 8. { and } (curly braces) {HealthCare123} … no escape needed 9. ; (semicolon) ;Copper123; … no escape needed 10. | (pipe) |PasswdTst123| … no escape needed 11. < (less than) <Mooser123> … no escape needed 12. > (greater than) <|>Copper123<|> … no escape needed 13. >> (double greater than) >>Mooser321<< … no escape needed 14. ' (single quotes) ‘Copper911’ … no escape needed 15. * (asterisk) *Mooser123* … no escape needed 16. # (hash or pound sign) #Mooser123# … no escape needed 17. ! (exclamation mark) !!@$Mooser1$@!! … no escape needed 18. ~ (tilde) ~Copper1~ … no escape needed 19. @ (at symbol) @Passwd1@ … no escape needed 20. ^ (caret) @^Myword1^@ … no escape needed Test Plan: PASS: Build and Install Debian Image PASS: Run collect with typical password The following password patterns were verified to be parsed properly and all verified to work with collect. PASS: [[Pa$$word123]] -> \[\[Pa\$\$word123\]\] PASS: $$Passwd123$$ -> \$\$Passwd123\$\$ PASS: \Passwd1\ -> \\Passwd1\\ PASS: "Passwd1" -> \"Passwd1\" PASS: [Passwd1] -> \[Passwd1\] PASS: $Passwd1$ -> \$Passwd1\$ PASS: Li69nux* -> Li69nux* PASS: "[Li69nux*]" -> \"\[Li69nux*\]\" PASS: St8rlingX* -> St8rlingX* PASS: $t8rlingX* -> \$t8rlingX* PASS: $[$$Passwd1$$]$ -> \$\[\$\$Passwd1\$\$\]\$ PASS: "]\\$Passwd1$\\[" -> \"\]\\\\\$Passwd1\$\\\\\[\" PASS: [[$$$[Passwd1]$$$] -> \[\[\$\$\$\[Passwd1\]\$\$\$\] PASS: ""[[[$$$Passwd1$$$]]]"" -> \"\"\[\[\[\$\$\$Passwd1\$\$\$\]\]\]\"\" Closes-Bug: 2019511 Change-Id: I7d1f3b1e3814b6acb017994bc3a2822ea3ff0244 Signed-off-by: Eric MacDonald <eric.macdonald@windriver.com>
This commit is contained in:
parent
71d0c40b2d
commit
55db5c8470
@ -1112,11 +1112,11 @@ fi
|
||||
# input for the purposes of storing it in ${pw}, expect
|
||||
# will need certain special characters to be backslash
|
||||
# delimited
|
||||
pw=${pw/\\/\\\\} # replace '\' with '\\'
|
||||
pw=${pw/\]/\\\]} # replace ']' with '\]'
|
||||
pw=${pw/\[/\\\[} # replace '[' with '\['
|
||||
pw=${pw/$/\\$} # replace '$' with '\$'
|
||||
pw=${pw/\"/\\\"} # replace '"' with '\"'
|
||||
pw=$(echo "${pw}" | sed 's/\\/\\\\/g') # replace all '\' with '\\'
|
||||
pw=$(echo "${pw}" | sed 's/\]/\\]/g') # replace all ']' with '\]'
|
||||
pw=$(echo "${pw}" | sed 's/\[/\\[/g') # replace all '[' with '\['
|
||||
pw=$(echo "${pw}" | sed 's/\$/\\$/g') # replace all '$' with '\$'
|
||||
pw=$(echo "${pw}" | sed 's/\"/\\"/g') # replace all '"' with '\"'
|
||||
|
||||
ilog "collect bundle timeout set to $((${TIMEOUT}/60)) minutes"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user