From 6cea38cf1a4a0b20f777f7cc06c6a06f16afda10 Mon Sep 17 00:00:00 2001 From: murray Date: Wed, 8 Nov 2000 11:57:03 +0000 Subject: Added PROPERTY_MAX_VALUE and PROPERTY_MAX_NAME defines to libutil.h so that applications know how large of a buffer they must allocate before calling property_find(). Also added a $FreeBSD$ tag while I'm here. Approved by: jkh --- lib/libutil/libutil.h | 3 +++ lib/libutil/property.3 | 4 +++- lib/libutil/property.c | 15 +++++++-------- 3 files changed, 13 insertions(+), 9 deletions(-) (limited to 'lib/libutil') diff --git a/lib/libutil/libutil.h b/lib/libutil/libutil.h index 18fb83f..4125b1a 100644 --- a/lib/libutil/libutil.h +++ b/lib/libutil/libutil.h @@ -31,6 +31,9 @@ #include +#define PROPERTY_MAX_NAME 64 +#define PROPERTY_MAX_VALUE 512 + /* for properties.c */ typedef struct _property { struct _property *next; diff --git a/lib/libutil/property.3 b/lib/libutil/property.3 index 22b6e99..6d5cd4f 100644 --- a/lib/libutil/property.3 +++ b/lib/libutil/property.3 @@ -66,7 +66,9 @@ of error. .Fn property_find Returns the associated value string for the property named .Fa name -if found, otherwise NULL. +if found, otherwise NULL. The value returned may be up to +.Dv PROPERTY_MAX_VALUE +bytes in length. .Pp .Fn properties_free is used to free the structure returned by diff --git a/lib/libutil/property.c b/lib/libutil/property.c index 23714a0..ba8eef9 100644 --- a/lib/libutil/property.c +++ b/lib/libutil/property.c @@ -28,6 +28,8 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * + * $FreeBSD$ + * */ #include @@ -39,9 +41,6 @@ #include #include -#define MAX_NAME 64 -#define MAX_VALUE 512 - static properties property_alloc(char *name, char *value) { @@ -58,8 +57,8 @@ properties properties_read(int fd) { properties head, ptr; - char hold_n[MAX_NAME + 1]; - char hold_v[MAX_VALUE + 1]; + char hold_n[PROPERTY_MAX_NAME + 1]; + char hold_v[PROPERTY_MAX_VALUE + 1]; char buf[BUFSIZ * 4]; int bp, n, v, max; enum { LOOK, COMMENT, NAME, VALUE, MVALUE, COMMIT, FILL, STOP } state; @@ -97,7 +96,7 @@ properties_read(int fd) continue; } else if (isalnum(ch) || ch == '_') { - if (n >= MAX_NAME) { + if (n >= PROPERTY_MAX_NAME) { n = 0; state = COMMENT; } @@ -146,7 +145,7 @@ properties_read(int fd) state = COMMIT; } else { - if (v >= MAX_VALUE) { + if (v >= PROPERTY_MAX_VALUE) { state = COMMENT; v = n = 0; break; @@ -158,7 +157,7 @@ properties_read(int fd) case MVALUE: /* multiline value */ - if (v >= MAX_VALUE) { + if (v >= PROPERTY_MAX_VALUE) { warn("properties_read: value exceeds max length"); state = COMMENT; n = v = 0; -- cgit v1.1