Skip to content

Commit a94127c

Browse files
authored
Merge pull request #518 from quodlibetor/message-length-error-uniqueness
Make all invalid message length errors unique
2 parents 5423243 + 4a3df87 commit a94127c

File tree

2 files changed

+18
-18
lines changed

2 files changed

+18
-18
lines changed

postgres-protocol/src/message/backend.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ impl Header {
5353
if len < 4 {
5454
return Err(io::Error::new(
5555
io::ErrorKind::InvalidData,
56-
"invalid message length",
56+
"invalid message length: header length < 4",
5757
));
5858
}
5959

@@ -123,7 +123,7 @@ impl Message {
123123
if len < 4 {
124124
return Err(io::Error::new(
125125
io::ErrorKind::InvalidInput,
126-
"invalid message length",
126+
"invalid message length: parsing u32",
127127
));
128128
}
129129

@@ -271,7 +271,7 @@ impl Message {
271271
if !buf.is_empty() {
272272
return Err(io::Error::new(
273273
io::ErrorKind::InvalidInput,
274-
"invalid message length",
274+
"invalid message length: expected buffer to be empty",
275275
));
276276
}
277277

@@ -376,7 +376,7 @@ impl<'a> FallibleIterator for SaslMechanisms<'a> {
376376
if self.0.len() != 1 {
377377
return Err(io::Error::new(
378378
io::ErrorKind::InvalidData,
379-
"invalid message length",
379+
"invalid message length: expected to be at end of iterator for sasl",
380380
));
381381
}
382382
Ok(None)
@@ -488,7 +488,7 @@ impl<'a> FallibleIterator for ColumnFormats<'a> {
488488
} else {
489489
return Err(io::Error::new(
490490
io::ErrorKind::InvalidInput,
491-
"invalid message length",
491+
"invalid message length: wrong column formats",
492492
));
493493
}
494494
}
@@ -564,7 +564,7 @@ impl<'a> FallibleIterator for DataRowRanges<'a> {
564564
} else {
565565
return Err(io::Error::new(
566566
io::ErrorKind::InvalidInput,
567-
"invalid message length",
567+
"invalid message length: datarowrange is not empty",
568568
));
569569
}
570570
}
@@ -622,7 +622,7 @@ impl<'a> FallibleIterator for ErrorFields<'a> {
622622
} else {
623623
return Err(io::Error::new(
624624
io::ErrorKind::InvalidInput,
625-
"invalid message length",
625+
"invalid message length: error fields is not drained",
626626
));
627627
}
628628
}
@@ -718,7 +718,7 @@ impl<'a> FallibleIterator for Parameters<'a> {
718718
} else {
719719
return Err(io::Error::new(
720720
io::ErrorKind::InvalidInput,
721-
"invalid message length",
721+
"invalid message length: parameters is not drained",
722722
));
723723
}
724724
}
@@ -794,7 +794,7 @@ impl<'a> FallibleIterator for Fields<'a> {
794794
} else {
795795
return Err(io::Error::new(
796796
io::ErrorKind::InvalidInput,
797-
"invalid message length",
797+
"invalid message length: field is not drained",
798798
));
799799
}
800800
}

postgres-protocol/src/types/mod.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -308,11 +308,11 @@ pub fn varbit_from_sql<'a>(
308308
) -> Result<Varbit<'a>, StdBox<dyn Error + Sync + Send>> {
309309
let len = buf.read_i32::<BigEndian>()?;
310310
if len < 0 {
311-
return Err("invalid varbit length".into());
311+
return Err("invalid varbit length: varbit < 0".into());
312312
}
313313
let bytes = (len as usize + 7) / 8;
314314
if buf.len() != bytes {
315-
return Err("invalid message length".into());
315+
return Err("invalid message length: varbit mismatch".into());
316316
}
317317

318318
Ok(Varbit {
@@ -362,7 +362,7 @@ pub fn timestamp_to_sql(v: i64, buf: &mut BytesMut) {
362362
pub fn timestamp_from_sql(mut buf: &[u8]) -> Result<i64, StdBox<dyn Error + Sync + Send>> {
363363
let v = buf.read_i64::<BigEndian>()?;
364364
if !buf.is_empty() {
365-
return Err("invalid message length".into());
365+
return Err("invalid message length: timestamp not drained".into());
366366
}
367367
Ok(v)
368368
}
@@ -382,7 +382,7 @@ pub fn date_to_sql(v: i32, buf: &mut BytesMut) {
382382
pub fn date_from_sql(mut buf: &[u8]) -> Result<i32, StdBox<dyn Error + Sync + Send>> {
383383
let v = buf.read_i32::<BigEndian>()?;
384384
if !buf.is_empty() {
385-
return Err("invalid message length".into());
385+
return Err("invalid message length: date not drained".into());
386386
}
387387
Ok(v)
388388
}
@@ -402,7 +402,7 @@ pub fn time_to_sql(v: i64, buf: &mut BytesMut) {
402402
pub fn time_from_sql(mut buf: &[u8]) -> Result<i64, StdBox<dyn Error + Sync + Send>> {
403403
let v = buf.read_i64::<BigEndian>()?;
404404
if !buf.is_empty() {
405-
return Err("invalid message length".into());
405+
return Err("invalid message length: time not drained".into());
406406
}
407407
Ok(v)
408408
}
@@ -417,7 +417,7 @@ pub fn macaddr_to_sql(v: [u8; 6], buf: &mut BytesMut) {
417417
#[inline]
418418
pub fn macaddr_from_sql(buf: &[u8]) -> Result<[u8; 6], StdBox<dyn Error + Sync + Send>> {
419419
if buf.len() != 6 {
420-
return Err("invalid message length".into());
420+
return Err("invalid message length: macaddr length mismatch".into());
421421
}
422422
let mut out = [0; 6];
423423
out.copy_from_slice(buf);
@@ -434,7 +434,7 @@ pub fn uuid_to_sql(v: [u8; 16], buf: &mut BytesMut) {
434434
#[inline]
435435
pub fn uuid_from_sql(buf: &[u8]) -> Result<[u8; 16], StdBox<dyn Error + Sync + Send>> {
436436
if buf.len() != 16 {
437-
return Err("invalid message length".into());
437+
return Err("invalid message length: uuid size mismatch".into());
438438
}
439439
let mut out = [0; 16];
440440
out.copy_from_slice(buf);
@@ -615,7 +615,7 @@ impl<'a> FallibleIterator for ArrayValues<'a> {
615615
fn next(&mut self) -> Result<Option<Option<&'a [u8]>>, StdBox<dyn Error + Sync + Send>> {
616616
if self.remaining == 0 {
617617
if !self.buf.is_empty() {
618-
return Err("invalid message length".into());
618+
return Err("invalid message length: arrayvalue not drained".into());
619619
}
620620
return Ok(None);
621621
}
@@ -944,7 +944,7 @@ impl<'a> FallibleIterator for PathPoints<'a> {
944944
fn next(&mut self) -> Result<Option<Point>, StdBox<dyn Error + Sync + Send>> {
945945
if self.remaining == 0 {
946946
if !self.buf.is_empty() {
947-
return Err("invalid message length".into());
947+
return Err("invalid message length: path points not drained".into());
948948
}
949949
return Ok(None);
950950
}

0 commit comments

Comments
 (0)