Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP2:GA
acl
0019-read_acl_-comments-seq-switch-to-next_line...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0019-read_acl_-comments-seq-switch-to-next_line.patch of Package acl
From 34d5069ab4187aece1b711a86af705ff121ac62d Mon Sep 17 00:00:00 2001 From: Mike Frysinger <vapier@gentoo.org> Date: Sun, 19 Jan 2014 01:05:11 -0500 Subject: [PATCH 19/34] read_acl_{comments,seq}: switch to next_line Rather than use a fixed length buffer, use next_line. This let's us handle any arbitrary length and avoid the non-portable PATH_MAX. Fixes bug 27388 in the acl tracker. --- tools/parse.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/tools/parse.c b/tools/parse.c index 6f30cf5..df69c26 100644 --- a/tools/parse.c +++ b/tools/parse.c @@ -419,9 +419,7 @@ read_acl_comments( bytes for "# file: ". Not a good solution but for now it is the best I can do without too much impact on the code. [tw] */ - char linebuf[(4*PATH_MAX)+9]; - char *cp; - char *p; + char *line, *cp, *p; int comments_read = 0; if (path_p) @@ -449,19 +447,20 @@ read_acl_comments( if (lineno) (*lineno)++; - if (fgets(linebuf, sizeof(linebuf), file) == NULL) + line = next_line(file); + if (line == NULL) break; comments_read = 1; - p = strrchr(linebuf, '\0'); - while (p > linebuf && + p = strrchr(line, '\0'); + while (p > line && (*(p-1)=='\r' || *(p-1)=='\n')) { p--; *p = '\0'; } - cp = linebuf; + cp = line; SKIP_WS(cp); if (strncmp(cp, "file:", 5) == 0) { cp += 5; @@ -542,20 +541,18 @@ read_acl_seq( int *lineno, int *which) { - char linebuf[1024]; + char *line; const char *cp; cmd_t cmd; if (which) *which = -1; - for(;;) { - if (fgets(linebuf, sizeof(linebuf), file) == NULL) - break; + while ((line = next_line(file))) { if (lineno) (*lineno)++; - cp = linebuf; + cp = line; SKIP_WS(cp); if (*cp == '\0') { if (!(parse_mode & SEQ_PARSE_MULTI)) @@ -588,7 +585,7 @@ read_acl_seq( fail: if (which) - *which = (cp - linebuf); + *which = (cp - line); return -1; } -- 2.5.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor