mirror of
https://github.com/git/git.git
synced 2024-11-27 20:14:30 +08:00
fbdd4f6fb4
Introduce a "max_off" field in struct sliding_view, roughly representing a maximum number of bytes that can be read from "file". If it is set to a nonnegative integer, a call to move_window() attempting to put the right endpoint beyond that offset will return an error instead. The idea is to use this when applying Subversion-format deltas to prevent reads past the end of the preimage (which has known length). Without such a check, corrupt deltas would cause svn-fe to block indefinitely when data in the input pipe is exhausted. Inspired-by: Ramkumar Ramachandra <artagnon@gmail.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
19 lines
376 B
C
19 lines
376 B
C
#ifndef SLIDING_WINDOW_H_
|
|
#define SLIDING_WINDOW_H_
|
|
|
|
#include "strbuf.h"
|
|
|
|
struct sliding_view {
|
|
struct line_buffer *file;
|
|
off_t off;
|
|
size_t width;
|
|
off_t max_off; /* -1 means unlimited */
|
|
struct strbuf buf;
|
|
};
|
|
|
|
#define SLIDING_VIEW_INIT(input, len) { (input), 0, 0, (len), STRBUF_INIT }
|
|
|
|
extern int move_window(struct sliding_view *view, off_t off, size_t width);
|
|
|
|
#endif
|