Bladeren bron

keygen: Enhance read random loop

- Rewrite goto loop to while loop - this makes coverity error go away
  and increase readability
- Properly report used random file (there was hardcoded /dev/random)
- Test read returning 0 (end of file)
- Enhance message with bits needed (unsigned and size_t)

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
Jan Friesse 6 maanden geleden
bovenliggende
commit
3b284fba81
1 gewijzigde bestanden met toevoegingen van 17 en 10 verwijderingen
  1. 17 10
      tools/corosync-keygen.c

+ 17 - 10
tools/corosync-keygen.c

@@ -149,16 +149,23 @@ int main (int argc, char *argv[])
 	 */
 	bytes_read = 0;
 
-retry_read:
-	res = read (random_fd, &key[bytes_read], key_len - bytes_read);
-	if (res == -1) {
-		err (1, "Could not read /dev/random");
-	}
-	bytes_read += res;
-	if (bytes_read != key_len) {
-		printf ("Press keys on your keyboard to generate entropy (%d bits still needed).\n",
-		    (int)((key_len - bytes_read) * 8));
-		goto retry_read;
+	while (bytes_read < key_len) {
+		res = read (random_fd, &key[bytes_read], key_len - bytes_read);
+
+		if (res == -1) {
+			err (1, "Could not read %s", random_dev);
+		}
+
+		if (res == 0) {
+			errx (1, "Unexpected end of %s", random_dev);
+		}
+
+		bytes_read += res;
+
+		if (bytes_read != key_len) {
+			printf ("Press keys on your keyboard to generate entropy (%zu bits still needed).\n",
+			    (size_t)((key_len - bytes_read) * 8));
+		}
 	}
 	close (random_fd);