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
This commit is contained in:
parent
edd5302d4d
commit
f9f81f78d2
lib/libutil
@ -31,6 +31,9 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
#define PROPERTY_MAX_NAME 64
|
||||
#define PROPERTY_MAX_VALUE 512
|
||||
|
||||
/* for properties.c */
|
||||
typedef struct _property {
|
||||
struct _property *next;
|
||||
|
@ -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
|
||||
|
@ -28,6 +28,8 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*
|
||||
*/
|
||||
|
||||
#include <ctype.h>
|
||||
@ -39,9 +41,6 @@
|
||||
#include <sys/types.h>
|
||||
#include <libutil.h>
|
||||
|
||||
#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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user