Skip to content

Commit 6bf7eea

Browse files
committed
Merge pull request #128 from technion/inlength
Improve handling of long passwords for command line utility.
2 parents cd77d12 + 5d2810e commit 6bf7eea

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

src/run.c

+13-5
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#define LANES_DEF 1
2929
#define THREADS_DEF 1
3030
#define OUTLEN_DEF 32
31+
#define MAX_PASS_LEN 128
3132

3233
#define UNUSED_PARAMETER(x) (void)(x)
3334

@@ -161,18 +162,25 @@ int main(int argc, char *argv[]) {
161162
int raw_only = 0;
162163
int i;
163164
size_t n;
164-
char pwd[128], *salt;
165+
char pwd[MAX_PASS_LEN], *salt;
165166

166167
if (argc < 2) {
167168
usage(argv[0]);
168169
return ARGON2_MISSING_ARGS;
169170
}
170171

171172
/* get password from stdin */
172-
while ((n = fread(pwd, 1, sizeof pwd - 1, stdin)) > 0) {
173-
pwd[n] = '\0';
174-
if (pwd[n - 1] == '\n')
175-
pwd[n - 1] = '\0';
173+
n = fread(pwd, 1, sizeof pwd - 1, stdin);
174+
if(n < 1) {
175+
fatal("no password read");
176+
}
177+
if(n == MAX_PASS_LEN-1) {
178+
fatal("Provided password longer than supported in command line utility");
179+
}
180+
181+
pwd[n] = '\0';
182+
if (pwd[n - 1] == '\n') {
183+
pwd[n - 1] = '\0';
176184
}
177185

178186
salt = argv[1];

0 commit comments

Comments
 (0)