chiark / gitweb /
sshkeys: Add paranoid whitespace check
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 1 Jun 2021 20:51:26 +0000 (21:51 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 1 Jun 2021 20:57:43 +0000 (21:57 +0100)
Newlines, in particular, would mess things up.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/sshkeys.rs

index 30b7693dbcd418bb3a70c250284cfefce30483aa..a3268464a6404d4a274e8892677da53688b83ced 100644 (file)
@@ -119,6 +119,7 @@ mod veneer {
   #[derive(Error,Debug,Clone,Serialize,Deserialize)]
   pub enum KeyError {
     #[error("bad key data: {0}")]                        BadData(String),
+    #[error("whitespace in public key data!")]           Whitespace,
     #[error("failed to save key data, possibly broken")] Dirty,
   }
 
@@ -146,7 +147,11 @@ mod veneer {
         options: None,
         comment: None,
       };
-      (PubData(data.to_string()), Comment(comment.unwrap_or_default()))
+      let data = PubData(data.to_string());
+      if data.0.chars().any(|c| c !=' ' && c.is_whitespace()) {
+        throw!(KeyError::Whitespace);
+      }
+      (data, Comment(comment.unwrap_or_default()))
     }
   }