Limiting the amount of messages that can be buffered while rekeying to two channel windows

pmeunier
Jul 6, 2021, 7:11 PM
G3FNNIIUCVMPJUICDYPXVS6BP6225LIQZOV5MRNEGCBC5QY3N6NAC

Dependencies

  • [2] OQZGSEWM Buffering non-kex packets received after issuing a KEXINIT
  • [3] E2SB74SV Version 0.30.3
  • [4] 2WEO7OZL Version updates: getting rid of anyhow + moving to Tokio 1.0
  • [5] WXZWQLGL Correct negotiation without OpenSSL
  • [6] 7Y2ROIVZ Version bump
  • [7] 662ZS5JF Version 0.33.2
  • [8] DJT33BQE Version bump
  • [9] VYDCQWSF Version 0.30.6
  • [10] BRDS7STA Adding method `send_channel_msg` to client::Session, to make it easier to write handlers
  • [11] 2VTUKRLJ Version
  • [12] ORSEEVB5 Version bump
  • [13] FT67GGO4 Version bump (Pijul and Thrussh)
  • [14] CQSPFH4H Version 0.30.4
  • [15] TFYJ3P2A Version 0.30.8/0.19.4, and solving conflicts
  • [16] 634OYCNM Tokio 0.3
  • [17] PDTFLA4Y Version 0.30.7
  • [18] 7FRJYUI6 Reboot because of a bad change
  • [19] ASD7JVBE Do not read past the size of the buffer (after Tokio 0.3)
  • [20] CWHVPLXN Version bump

Change contents

  • edit in thrussh/src/server/session.rs at line 14
    [2.46]
    [3.188593]
    pub(crate) pending_len: u32,
  • edit in thrussh/src/server/mod.rs at line 478
    [2.82]
    [3.218750]
    pending_len: 0,
  • edit in thrussh/src/server/encrypted.rs at line 94
    [2.349]
    [3.233171]
    self.pending_len = 0;
  • edit in thrussh/src/server/encrypted.rs at line 101
    [2.440]
    [2.440]
    self.pending_len += buf.len() as u32;
    if self.pending_len > 2 * self.target_window_size {
    return Err(Error::Pending.into())
    }
  • edit in thrussh/src/lib.rs at line 409
    [3.13108]
    [3.13108]
    #[error("Pending buffer limit reached")]
    Pending,
  • edit in thrussh/src/client/mod.rs at line 53
    [2.1060]
    [3.336548]
    pending_len: u32,
  • edit in thrussh/src/client/mod.rs at line 813
    [2.1096]
    [3.358127]
    pending_len: 0,
  • edit in thrussh/src/client/encrypted.rs at line 108
    [2.1382]
    [3.388084]
    self.pending_len = 0;
  • edit in thrussh/src/client/encrypted.rs at line 115
    [2.1536]
    [2.1536]
    self.pending_len += buf.len() as u32;
    if self.pending_len > 2 * self.target_window_size {
    return Err(Error::Pending.into())
    }
  • replacement in thrussh/Cargo.toml at line 5
    [3.426214][2.1817:1836]()
    version = "0.33.3"
    [3.426214]
    [3.426233]
    version = "0.33.5"