Skip to content

Commit 4f81c1c

Browse files
fix panic when null byte is included in filename
1 parent 9e68136 commit 4f81c1c

File tree

11 files changed

+64
-64
lines changed

11 files changed

+64
-64
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ Example
4747
![Result Image](images/simple1.png)
4848

4949
```rust
50-
let workbook = Workbook::new("target/simple1.xlsx");
50+
let workbook = Workbook::new("target/simple1.xlsx")?;
5151
let format1 = workbook.add_format().set_font_color(FormatColor::Red);
5252

5353
let format2 = workbook

libxlsxwriter/examples/hello_spreadsheet.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use xlsxwriter::{FormatAlignment, FormatColor, FormatUnderline, Workbook};
22

33
fn main() -> Result<(), xlsxwriter::XlsxError> {
4-
let workbook = Workbook::new("target/simple1.xlsx");
4+
let workbook = Workbook::new("target/simple1.xlsx")?;
55
let format1 = workbook.add_format().set_font_color(FormatColor::Red);
66

77
let format2 = workbook

libxlsxwriter/src/chart/mod.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use super::Workbook;
1515
/// ```rust
1616
/// use xlsxwriter::*;
1717
/// # fn main() -> Result<(), XlsxError> {
18-
/// let workbook = Workbook::new("test-chart.xlsx");
18+
/// let workbook = Workbook::new("test-chart.xlsx")?;
1919
/// let mut worksheet = workbook.add_worksheet(None)?;
2020
/// write_worksheet(&mut worksheet)?; // write worksheet contents
2121
/// let mut chart = workbook.add_chart(ChartType::Column);
@@ -56,7 +56,7 @@ impl<'a> Chart<'a> {
5656
/// ```rust
5757
/// # use xlsxwriter::*;
5858
/// # fn main() -> Result<(), XlsxError> {
59-
/// # let workbook = Workbook::new("test-chart-add_series-1.xlsx");
59+
/// # let workbook = Workbook::new("test-chart-add_series-1.xlsx")?;
6060
/// # let mut worksheet = workbook.add_worksheet(None)?;
6161
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
6262
/// # let mut chart = workbook.add_chart(ChartType::Column);
@@ -78,7 +78,7 @@ impl<'a> Chart<'a> {
7878
/// ```rust
7979
/// # use xlsxwriter::*;
8080
/// # fn main() -> Result<(), XlsxError> {
81-
/// # let workbook = Workbook::new("test-chart-add_series-2.xlsx");
81+
/// # let workbook = Workbook::new("test-chart-add_series-2.xlsx")?;
8282
/// # let mut worksheet = workbook.add_worksheet(None)?;
8383
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
8484
/// # let mut chart = workbook.add_chart(ChartType::Column);
@@ -100,7 +100,7 @@ impl<'a> Chart<'a> {
100100
/// ```rust
101101
/// # use xlsxwriter::*;
102102
/// # fn main() -> Result<(), XlsxError> {
103-
/// # let workbook = Workbook::new("test-chart-add_series-3.xlsx");
103+
/// # let workbook = Workbook::new("test-chart-add_series-3.xlsx")?;
104104
/// # let mut worksheet = workbook.add_worksheet(None)?;
105105
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
106106
/// # let mut chart = workbook.add_chart(ChartType::Column);
@@ -125,7 +125,7 @@ impl<'a> Chart<'a> {
125125
/// ```rust
126126
/// # use xlsxwriter::*;
127127
/// # fn main() -> Result<(), XlsxError> {
128-
/// # let workbook = Workbook::new("test-chart-add_series-4.xlsx");
128+
/// # let workbook = Workbook::new("test-chart-add_series-4.xlsx")?;
129129
/// # let mut worksheet = workbook.add_worksheet(None)?;
130130
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
131131
/// # let mut chart = workbook.add_chart(ChartType::Column);
@@ -148,7 +148,7 @@ impl<'a> Chart<'a> {
148148
/// ```rust
149149
/// # use xlsxwriter::*;
150150
/// # fn main() -> Result<(), XlsxError> {
151-
/// # let workbook = Workbook::new("test-chart-add_series-5.xlsx");
151+
/// # let workbook = Workbook::new("test-chart-add_series-5.xlsx")?;
152152
/// # let mut worksheet = workbook.add_worksheet(None)?;
153153
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
154154
/// # let mut chart = workbook.add_chart(ChartType::Column);

libxlsxwriter/src/chart/series.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ impl<'a> ChartSeries<'a> {
1717
/// ```rust
1818
/// # use xlsxwriter::*;
1919
/// # fn main() -> Result<(), XlsxError> {
20-
/// # let workbook = Workbook::new("test-chart_series-set_categories-1.xlsx");
20+
/// # let workbook = Workbook::new("test-chart_series-set_categories-1.xlsx")?;
2121
/// # let mut worksheet = workbook.add_worksheet(None)?;
2222
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
2323
/// # let mut chart = workbook.add_chart(ChartType::Column);
@@ -85,7 +85,7 @@ impl<'a> ChartSeries<'a> {
8585
/// ```rust
8686
/// use xlsxwriter::*;
8787
/// # fn main() -> Result<(), XlsxError> {
88-
/// # let workbook = Workbook::new("test-chart_series-set_name-1.xlsx");
88+
/// # let workbook = Workbook::new("test-chart_series-set_name-1.xlsx")?;
8989
/// # let mut worksheet = workbook.add_worksheet(None)?;
9090
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
9191
/// # let mut chart = workbook.add_chart(ChartType::Column);
@@ -111,7 +111,7 @@ impl<'a> ChartSeries<'a> {
111111
/// ```rust
112112
/// use xlsxwriter::*;
113113
/// # fn main() -> Result<(), XlsxError> {
114-
/// # let workbook = Workbook::new("test-chart_series-set_name-2.xlsx");
114+
/// # let workbook = Workbook::new("test-chart_series-set_name-2.xlsx")?;
115115
/// # let mut worksheet = workbook.add_worksheet(None)?;
116116
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
117117
/// # let mut chart = workbook.add_chart(ChartType::Column);
@@ -146,7 +146,7 @@ impl<'a> ChartSeries<'a> {
146146
/// ```rust
147147
/// # use xlsxwriter::*;
148148
/// # fn main() -> Result<(), XlsxError> {
149-
/// # let workbook = Workbook::new("test-chart_series-set_name_range-1.xlsx");
149+
/// # let workbook = Workbook::new("test-chart_series-set_name_range-1.xlsx")?;
150150
/// # let mut worksheet = workbook.add_worksheet(None)?;
151151
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
152152
/// # let mut chart = workbook.add_chart(ChartType::Column);
@@ -188,7 +188,7 @@ impl<'a> ChartSeries<'a> {
188188
/// ```rust
189189
/// # use xlsxwriter::*;
190190
/// # fn main() -> Result<(), XlsxError> {
191-
/// # let workbook = Workbook::new("test-chart_series-set_line-1.xlsx");
191+
/// # let workbook = Workbook::new("test-chart_series-set_line-1.xlsx")?;
192192
/// # let mut worksheet = workbook.add_worksheet(None)?;
193193
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
194194
/// # let mut chart = workbook.add_chart(ChartType::Column);
@@ -226,7 +226,7 @@ impl<'a> ChartSeries<'a> {
226226
/// ```rust
227227
/// # use xlsxwriter::*;
228228
/// # fn main() -> Result<(), XlsxError> {
229-
/// # let workbook = Workbook::new("test-chart_series-set_fill-1.xlsx");
229+
/// # let workbook = Workbook::new("test-chart_series-set_fill-1.xlsx")?;
230230
/// # let mut worksheet = workbook.add_worksheet(None)?;
231231
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
232232
/// # let mut chart = workbook.add_chart(ChartType::Column);
@@ -268,7 +268,7 @@ impl<'a> ChartSeries<'a> {
268268
/// ```rust
269269
/// # use xlsxwriter::*;
270270
/// # fn main() -> Result<(), XlsxError> {
271-
/// # let workbook = Workbook::new("test-chart_series-set_invert_if_negative-1.xlsx");
271+
/// # let workbook = Workbook::new("test-chart_series-set_invert_if_negative-1.xlsx")?;
272272
/// # let mut worksheet = workbook.add_worksheet(None)?;
273273
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
274274
/// # let mut chart = workbook.add_chart(ChartType::Column);
@@ -316,7 +316,7 @@ impl<'a> ChartSeries<'a> {
316316
/// ```rust
317317
/// # use xlsxwriter::*;
318318
/// # fn main() -> Result<(), XlsxError> {
319-
/// # let workbook = Workbook::new("test-chart_series-set_pattern-1.xlsx");
319+
/// # let workbook = Workbook::new("test-chart_series-set_pattern-1.xlsx")?;
320320
/// # let mut worksheet = workbook.add_worksheet(None)?;
321321
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
322322
/// # let mut chart = workbook.add_chart(ChartType::Column);
@@ -353,7 +353,7 @@ impl<'a> ChartSeries<'a> {
353353
/// ```rust
354354
/// # use xlsxwriter::*;
355355
/// # fn main() -> Result<(), XlsxError> {
356-
/// # let workbook = Workbook::new("test-chart_series-set_marker-type-1.xlsx");
356+
/// # let workbook = Workbook::new("test-chart_series-set_marker-type-1.xlsx")?;
357357
/// # let mut worksheet = workbook.add_worksheet(None)?;
358358
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
359359
/// # let mut chart = workbook.add_chart(ChartType::Line);
@@ -383,7 +383,7 @@ impl<'a> ChartSeries<'a> {
383383
/// ```rust
384384
/// # use xlsxwriter::*;
385385
/// # fn main() -> Result<(), XlsxError> {
386-
/// # let workbook = Workbook::new("test-chart_series-set_marker-type-1.xlsx");
386+
/// # let workbook = Workbook::new("test-chart_series-set_marker-type-1.xlsx")?;
387387
/// # let mut worksheet = workbook.add_worksheet(None)?;
388388
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
389389
/// # let mut chart = workbook.add_chart(ChartType::Line);
@@ -411,7 +411,7 @@ impl<'a> ChartSeries<'a> {
411411
/// ```rust
412412
/// # use xlsxwriter::*;
413413
/// # fn main() -> Result<(), XlsxError> {
414-
/// # let workbook = Workbook::new("test-chart_series-set_marker-line-1.xlsx");
414+
/// # let workbook = Workbook::new("test-chart_series-set_marker-line-1.xlsx")?;
415415
/// # let mut worksheet = workbook.add_worksheet(None)?;
416416
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
417417
/// # let mut chart = workbook.add_chart(ChartType::Line);
@@ -447,7 +447,7 @@ impl<'a> ChartSeries<'a> {
447447
/// ```rust
448448
/// # use xlsxwriter::*;
449449
/// # fn main() -> Result<(), XlsxError> {
450-
/// # let workbook = Workbook::new("test-chart_series-set_marker-fill-1.xlsx");
450+
/// # let workbook = Workbook::new("test-chart_series-set_marker-fill-1.xlsx")?;
451451
/// # let mut worksheet = workbook.add_worksheet(None)?;
452452
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
453453
/// # let mut chart = workbook.add_chart(ChartType::Line);
@@ -488,7 +488,7 @@ impl<'a> ChartSeries<'a> {
488488
/// ```rust
489489
/// # use xlsxwriter::*;
490490
/// # fn main() -> Result<(), XlsxError> {
491-
/// # let workbook = Workbook::new("test-chart_series-set_smooth-1.xlsx");
491+
/// # let workbook = Workbook::new("test-chart_series-set_smooth-1.xlsx")?;
492492
/// # let mut worksheet = workbook.add_worksheet(None)?;
493493
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
494494
/// # let mut chart = workbook.add_chart(ChartType::Line);
@@ -518,7 +518,7 @@ impl<'a> ChartSeries<'a> {
518518
/// ```rust
519519
/// # use xlsxwriter::*;
520520
/// # fn main() -> Result<(), XlsxError> {
521-
/// # let workbook = Workbook::new("test-chart_series-set_labels-1.xlsx");
521+
/// # let workbook = Workbook::new("test-chart_series-set_labels-1.xlsx")?;
522522
/// # let mut worksheet = workbook.add_worksheet(None)?;
523523
/// # write_worksheet(&mut worksheet)?; // write worksheet contents
524524
/// # let mut chart = workbook.add_chart(ChartType::Line);

libxlsxwriter/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
//! use xlsxwriter::*;
3030
//!
3131
//! # fn main() -> Result<(), XlsxError> {
32-
//! let workbook = Workbook::new("simple1.xlsx");
32+
//! let workbook = Workbook::new("simple1.xlsx")?;
3333
//! let mut format1 = workbook.add_format()
3434
//! .set_font_color(FormatColor::Red);
3535
//!

libxlsxwriter/src/test.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use super::*;
22

33
#[test]
44
fn test_simple1() -> Result<(), XlsxError> {
5-
let workbook = Workbook::new("../target/simple1.xlsx");
5+
let workbook = Workbook::new("../target/simple1.xlsx")?;
66
let format1 = workbook.add_format().set_font_color(FormatColor::Red);
77

88
let format2 = workbook
@@ -37,7 +37,7 @@ fn test_simple1() -> Result<(), XlsxError> {
3737

3838
#[test]
3939
fn test_sample1() -> Result<(), XlsxError> {
40-
let workbook = Workbook::new("../target/test.xlsx");
40+
let workbook = Workbook::new("../target/test.xlsx")?;
4141

4242
let format1 = workbook
4343
.add_format()
@@ -86,7 +86,7 @@ fn test_sample1() -> Result<(), XlsxError> {
8686

8787
#[test]
8888
fn test_add_table1() -> Result<(), XlsxError> {
89-
let workbook = Workbook::new("test-worksheet_add_table-2.xlsx");
89+
let workbook = Workbook::new("test-worksheet_add_table-2.xlsx")?;
9090
let mut worksheet = workbook.add_worksheet(None)?;
9191
worksheet.write_string(0, 0, "header 1", None)?;
9292
worksheet.write_string(0, 1, "header 2", None)?;
@@ -117,7 +117,7 @@ fn test_add_table1() -> Result<(), XlsxError> {
117117

118118
#[test]
119119
fn test_add_table2() -> Result<(), XlsxError> {
120-
let workbook = Workbook::new("test-worksheet_add_table-3.xlsx");
120+
let workbook = Workbook::new("test-worksheet_add_table-3.xlsx")?;
121121
let mut worksheet = workbook.add_worksheet(None)?;
122122
worksheet.write_string(0, 0, "header 1", None)?;
123123
worksheet.write_string(0, 1, "header 2", None)?;

libxlsxwriter/src/workbook.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use std::rc::Rc;
1212
/// ```rust
1313
/// use xlsxwriter::*;
1414
/// fn main() -> Result<(), XlsxError> {
15-
/// let workbook = Workbook::new("test-workbook.xlsx");
15+
/// let workbook = Workbook::new("test-workbook.xlsx")?;
1616
/// let mut worksheet = workbook.add_worksheet(None)?;
1717
/// worksheet.write_string(0, 0, "Hello Excel", None)?;
1818
/// workbook.close()
@@ -44,17 +44,17 @@ impl Workbook {
4444

4545
/// This function is used to create a new Excel workbook with a given filename.
4646
/// When specifying a filename it is recommended that you use an .xlsx extension or Excel will generate a warning when opening the file.
47-
pub fn new(filename: &str) -> Workbook {
47+
pub fn new(filename: &str) -> Result<Workbook, XlsxError> {
4848
unsafe {
49-
let workbook_name = Box::pin(CString::new(filename).expect("Null Error"));
49+
let workbook_name = Box::pin(CString::new(filename)?);
5050
let raw_workbook = libxlsxwriter_sys::workbook_new(workbook_name.as_ptr());
5151
if raw_workbook.is_null() {
5252
unreachable!()
5353
}
54-
Workbook {
54+
Ok(Workbook {
5555
workbook: raw_workbook,
5656
const_str: Rc::new(RefCell::new(vec![workbook_name])),
57-
}
57+
})
5858
}
5959
}
6060

@@ -214,7 +214,7 @@ impl Workbook {
214214
/// ```rust
215215
/// # use xlsxwriter::*;
216216
/// # fn main() -> Result<(), XlsxError> {
217-
/// let workbook = Workbook::new("test-workbook-define_name.xlsx");
217+
/// let workbook = Workbook::new("test-workbook-define_name.xlsx")?;
218218
/// let mut worksheet = workbook.add_worksheet(None)?;
219219
/// workbook.define_name("Exchange_rate", "=0.95");
220220
/// worksheet.write_formula(0, 0, "=Exchange_rate", None);

libxlsxwriter/src/worksheet/filter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ mod test {
231231

232232
#[test]
233233
fn test_autofilter() -> Result<(), XlsxError> {
234-
let workbook = Workbook::new("test-worksheet_autofilter.xlsx");
234+
let workbook = Workbook::new("test-worksheet_autofilter.xlsx")?;
235235
// ------------
236236
let mut worksheet1 = workbook.add_worksheet(Some("Sheet 1"))?;
237237
create_sheet(&mut worksheet1)?;

0 commit comments

Comments
 (0)