The NetBSD Project

CVS log for src/common/lib/libprop/prop_data.c

[BACK] Up to [cvs.NetBSD.org] / src / common / lib / libprop

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.18 / (download) - annotate - [select for diffs], Wed Aug 3 21:13:46 2022 UTC (20 months, 2 weeks ago) by riastradh
Branch: MAIN
CVS Tags: thorpej-ifq-base, thorpej-ifq, thorpej-altq-separation-base, thorpej-altq-separation, netbsd-10-base, netbsd-10-0-RELEASE, netbsd-10-0-RC6, netbsd-10-0-RC5, netbsd-10-0-RC4, netbsd-10-0-RC3, netbsd-10-0-RC2, netbsd-10-0-RC1, netbsd-10, HEAD
Changes since 1.17: +6 -6 lines
Diff to previous 1.17 (colored)

proplib: Nix trailing whitespace.

Revision 1.17 / (download) - annotate - [select for diffs], Mon Jun 8 21:31:56 2020 UTC (3 years, 10 months ago) by thorpej
Branch: MAIN
CVS Tags: cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1, cjep_staticlib_x-base, cjep_staticlib_x
Changes since 1.16: +1 -4 lines
Diff to previous 1.16 (colored)

Fix a paste-o that caused prop_data_create_copy() to be intolerant
of creating empty data objects.  Fixes t_ifconfig::ifconfig_description
unit test.

Revision 1.16 / (download) - annotate - [select for diffs], Sat Jun 6 21:25:59 2020 UTC (3 years, 10 months ago) by thorpej
Branch: MAIN
Changes since 1.15: +135 -62 lines
Diff to previous 1.15 (colored)

Improvements to the problib(3) API:

==> Provide a much more complete set of setters and getters for different
    value types in the prop_array_util(3) and prop_dictionary_util(3)
    functions.

==> Overhaul the prop_data(3), prop_number(3), and prop_string(3) APIs
    to be easier to use and less awkwardly named,  Deprecate the old
    awkward names, and produce link-time warnings when they are referenced.

==> Deprecate mutable prop_data(3) and prop_string(3) objects.  The old
    APIs that support them still exist, but will now produce link-time
    warnings when used.

==> When the new prop_string(3) API is used, strings are internally
    de-duplicated as a memory footprint optimization.

==> Provide a rich set of bounds-checked gettter functions in and a
    corresponding set of convenience setters in the prop_number(3) API.

==> Add a new prop_bool_value(3) function that is equivalent to
    prop_bool_true(3), but aligned with the new "value" routines in
    prop_data(3), prop_string(3), and prop_number(3).

Revision 1.14.50.3 / (download) - annotate - [select for diffs], Tue Apr 21 19:37:51 2020 UTC (3 years, 11 months ago) by martin
Branch: phil-wifi
Changes since 1.14.50.2: +1 -1 lines
Diff to previous 1.14.50.2 (colored) to branchpoint 1.14 (colored) next main 1.15 (colored)

Ooops, restore accidently removed files from merge mishap

Revision 1.14.50.2, Tue Apr 21 18:41:24 2020 UTC (3 years, 11 months ago) by martin
Branch: phil-wifi
Changes since 1.14.50.1: +1 -1 lines
FILE REMOVED

Sync with HEAD

Revision 1.14.50.1 / (download) - annotate - [select for diffs], Mon Jun 10 21:41:08 2019 UTC (4 years, 10 months ago) by christos
Branch: phil-wifi
Changes since 1.14: +2 -2 lines
Diff to previous 1.14 (colored)

Sync with HEAD

Revision 1.15 / (download) - annotate - [select for diffs], Wed May 8 02:25:50 2019 UTC (4 years, 11 months ago) by thorpej
Branch: MAIN
CVS Tags: phil-wifi-20200421, phil-wifi-20200411, phil-wifi-20200406, phil-wifi-20191119, phil-wifi-20190609, netbsd-9-base, netbsd-9-3-RELEASE, netbsd-9-2-RELEASE, netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2, netbsd-9-0-RC1, netbsd-9, is-mlppp-base, is-mlppp, bouyer-xenpvh-base2, bouyer-xenpvh-base1, bouyer-xenpvh-base, bouyer-xenpvh, ad-namecache-base3, ad-namecache-base, ad-namecache
Changes since 1.14: +2 -2 lines
Diff to previous 1.14 (colored)

Fix building libprop as a host tool library on platforms that don't have
the Matt Thomas rbtree:

- Include rb.c in libnbcompat, and provide a nbcompat sys/rbtree.h
  header.
- Make sure libprop's source file include prop_object_impl.h before
  anything else, and pull in nbtool_config.h from there.

Tested by simulating such a host system by renaming the host's
<sys/rbtree.h> out of the way (which reproduced the build failure)
and verifying that the host-tool installboot contained the rb_*
functions in its own .text segment.

Revision 1.13.4.1 / (download) - annotate - [select for diffs], Mon Jan 26 00:47:51 2009 UTC (15 years, 2 months ago) by snj
Branch: netbsd-5
CVS Tags: netbsd-5-2-RELEASE, netbsd-5-2-RC1, netbsd-5-2-3-RELEASE, netbsd-5-2-2-RELEASE, netbsd-5-2-1-RELEASE, netbsd-5-2, netbsd-5-1-RELEASE, netbsd-5-1-RC4, netbsd-5-1-RC3, netbsd-5-1-RC2, netbsd-5-1-RC1, netbsd-5-1-5-RELEASE, netbsd-5-1-4-RELEASE, netbsd-5-1-3-RELEASE, netbsd-5-1-2-RELEASE, netbsd-5-1-1-RELEASE, netbsd-5-1, netbsd-5-0-RELEASE, netbsd-5-0-RC4, netbsd-5-0-RC3, netbsd-5-0-RC2, netbsd-5-0-RC1, netbsd-5-0-2-RELEASE, netbsd-5-0-1-RELEASE, netbsd-5-0, matt-nb5-pq3-base, matt-nb5-pq3, matt-nb5-mips64-u2-k2-k4-k7-k8-k9, matt-nb5-mips64-u1-k1-k5, matt-nb5-mips64-premerge-20101231, matt-nb5-mips64-premerge-20091211, matt-nb5-mips64-k15, matt-nb5-mips64, matt-nb4-mips64-k7-u2a-k9b
Changes since 1.13: +16 -3 lines
Diff to previous 1.13 (colored) next main 1.14 (colored)

Pull up following revision(s) (requested by cyber in ticket #316):
	common/lib/libprop/prop_data.c: revision 1.14
Properly handle empty data nodes (such as generated by Apple's
plist editor). They are in the form of <data></data>, whereas the
original code path only checked for empty being <data/>.
This causes an assert to be triggered when trying to access the node's
content.
Patch reviewed by thorpej.

Revision 1.14 / (download) - annotate - [select for diffs], Sun Jan 25 06:59:35 2009 UTC (15 years, 2 months ago) by cyber
Branch: MAIN
CVS Tags: yamt-pagecache-tag8, yamt-pagecache-base9, yamt-pagecache-base8, yamt-pagecache-base7, yamt-pagecache-base6, yamt-pagecache-base5, yamt-pagecache-base4, yamt-pagecache-base3, yamt-pagecache-base2, yamt-pagecache-base, yamt-pagecache, yamt-nfs-mp-base9, yamt-nfs-mp-base8, yamt-nfs-mp-base7, yamt-nfs-mp-base6, yamt-nfs-mp-base5, yamt-nfs-mp-base4, yamt-nfs-mp-base3, yamt-nfs-mp-base11, yamt-nfs-mp-base10, tls-maxphys-base, tls-maxphys-20171202, tls-maxphys, tls-earlyentropy-base, tls-earlyentropy, rmind-uvmplock-base, rmind-smpnet-nbase, rmind-smpnet-base, riastradh-xf86-video-intel-2-7-1-pre-2-21-15, riastradh-drm2-base3, riastradh-drm2-base2, riastradh-drm2-base1, riastradh-drm2-base, riastradh-drm2, prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, phil-wifi-base, pgoyette-localcount-base, pgoyette-localcount-20170426, pgoyette-localcount-20170320, pgoyette-localcount-20170107, pgoyette-localcount-20161104, pgoyette-localcount-20160806, pgoyette-localcount-20160726, pgoyette-localcount, pgoyette-compat-merge-20190127, pgoyette-compat-base, pgoyette-compat-20190127, pgoyette-compat-20190118, pgoyette-compat-1226, pgoyette-compat-1126, pgoyette-compat-1020, pgoyette-compat-0930, pgoyette-compat-0906, pgoyette-compat-0728, pgoyette-compat-0625, pgoyette-compat-0521, pgoyette-compat-0502, pgoyette-compat-0422, pgoyette-compat-0415, pgoyette-compat-0407, pgoyette-compat-0330, pgoyette-compat-0322, pgoyette-compat-0315, pgoyette-compat, perseant-stdc-iso10646-base, perseant-stdc-iso10646, netbsd-8-base, netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1, netbsd-8, netbsd-7-nhusb-base-20170116, netbsd-7-nhusb-base, netbsd-7-nhusb, netbsd-7-base, netbsd-7-2-RELEASE, netbsd-7-1-RELEASE, netbsd-7-1-RC2, netbsd-7-1-RC1, netbsd-7-1-2-RELEASE, netbsd-7-1-1-RELEASE, netbsd-7-1, netbsd-7-0-RELEASE, netbsd-7-0-RC3, netbsd-7-0-RC2, netbsd-7-0-RC1, netbsd-7-0-2-RELEASE, netbsd-7-0-1-RELEASE, netbsd-7-0, netbsd-7, netbsd-6-base, netbsd-6-1-RELEASE, netbsd-6-1-RC4, netbsd-6-1-RC3, netbsd-6-1-RC2, netbsd-6-1-RC1, netbsd-6-1-5-RELEASE, netbsd-6-1-4-RELEASE, netbsd-6-1-3-RELEASE, netbsd-6-1-2-RELEASE, netbsd-6-1-1-RELEASE, netbsd-6-1, netbsd-6-0-RELEASE, netbsd-6-0-RC2, netbsd-6-0-RC1, netbsd-6-0-6-RELEASE, netbsd-6-0-5-RELEASE, netbsd-6-0-4-RELEASE, netbsd-6-0-3-RELEASE, netbsd-6-0-2-RELEASE, netbsd-6-0-1-RELEASE, netbsd-6-0, netbsd-6, matt-premerge-20091211, matt-nb8-mediatek-base, matt-nb8-mediatek, matt-nb6-plus-nbase, matt-nb6-plus-base, matt-nb6-plus, matt-mips64-premerge-20101231, localcount-20160914, khorben-n900, jymxensuspend-base, jym-xensuspend-nbase, jym-xensuspend-base, jym-xensuspend, cherry-xenmp-base, cherry-xenmp, bouyer-socketcan-base1, bouyer-socketcan-base, bouyer-socketcan, bouyer-quota2-nbase, bouyer-quota2-base, bouyer-quota2, agc-symver-base, agc-symver
Branch point for: phil-wifi
Changes since 1.13: +16 -3 lines
Diff to previous 1.13 (colored)

Properly handle empty data nodes (such as generated by Apple's
plist editor). They are in the form of <data></data>, whereas the
original code path only checked for empty being <data/>.

This causes an assert to be triggered when trying to access the node's
content.

Patch reviewed by thorpej.

Revision 1.5.4.2 / (download) - annotate - [select for diffs], Tue Nov 18 19:10:02 2008 UTC (15 years, 5 months ago) by snj
Branch: netbsd-4
Changes since 1.5.4.1: +3 -3 lines
Diff to previous 1.5.4.1 (colored) to branchpoint 1.5 (colored) next main 1.6 (colored)

Pull up following revision(s) (requested by tsutsui in ticket #1224):
	common/lib/libc/gen/bswap64.c: revision 1.2
	common/lib/libprop/prop_data.c: revision 1.10
	common/lib/libc/inet/inet_addr.c: revision 1.2
	common/lib/libc/hash/rmd160/rmd160.c: revision 1.4
	common/lib/libc/gen/bswap32.c: revision 1.2
	common/lib/libc/gen/bswap16.c: revision 1.2
	common/lib/libc/arch/alpha/gen/byte_swap_4.S: revision 1.3
	common/lib/libc/arch/sh3/string/memset.S: revision 1.2
	common/lib/libc/arch/alpha/gen/byte_swap_2.S: revision 1.3
	common/lib/libc/md/md5c.c: revision 1.3
	common/lib/libc/hash/sha1/sha1.c: revision 1.3
	common/lib/libc/md/md4c.c: revision 1.3
	sys/sys/rmd160.h: revision 1.2
	sys/sys/sha2.h: revision 1.2
For all files under src/common, as well as related man pages under
src/lib/libc, or related headers under src/sys/sys: change u_intNN_t to
uintNN_t.

Revision 1.11.2.2 / (download) - annotate - [select for diffs], Thu Sep 18 04:54:18 2008 UTC (15 years, 7 months ago) by wrstuden
Branch: wrstuden-revivesa
Changes since 1.11.2.1: +7 -5 lines
Diff to previous 1.11.2.1 (colored) to branchpoint 1.11 (colored) next main 1.12 (colored)

Sync with wrstuden-revivesa-base-2.

Revision 1.13 / (download) - annotate - [select for diffs], Sun Aug 3 04:00:12 2008 UTC (15 years, 8 months ago) by thorpej
Branch: MAIN
CVS Tags: wrstuden-revivesa-base-3, wrstuden-revivesa-base-2, netbsd-5-base, matt-mips64-base2
Branch point for: netbsd-5
Changes since 1.12: +7 -5 lines
Diff to previous 1.12 (colored)

Fix an issue introduced with the prop_stack change: It's not a good idea to
return a 3-value enum from a function declared to return bool.  This broke
the recurse case for prop_object_equals().  Instead, declare the object type
equals routine to return a _prop_object_equals_rv_t.

Give the same treatment to the object type free routines: declare them to
return a _prop_object_free_rv_t, and consistently check those return values
againt the enum type.

Tidy up some whitespace while we're here.

Revision 1.11.2.1 / (download) - annotate - [select for diffs], Mon Jun 23 04:26:46 2008 UTC (15 years, 10 months ago) by wrstuden
Branch: wrstuden-revivesa
Changes since 1.11: +2 -2 lines
Diff to previous 1.11 (colored)

Sync w/ -current. 34 merge conflicts to follow.

Revision 1.10.4.1 / (download) - annotate - [select for diffs], Sun May 18 12:28:47 2008 UTC (15 years, 11 months ago) by yamt
Branch: yamt-pf42
Changes since 1.10: +2 -9 lines
Diff to previous 1.10 (colored) next main 1.11 (colored)

sync with head.

Revision 1.12 / (download) - annotate - [select for diffs], Thu May 15 21:23:33 2008 UTC (15 years, 11 months ago) by dyoung
Branch: MAIN
CVS Tags: yamt-pf42-base4, yamt-pf42-base3, yamt-pf42-base2, wrstuden-revivesa-base-1, wrstuden-revivesa-base, hpcarm-cleanup-nbase
Changes since 1.11: +2 -2 lines
Diff to previous 1.11 (colored)

In prop_data_create_data(blob, len), if len == 0, allocate no memory
for blob, and leave pd_mutable set to NULL.  In this way, avoid
tripping over the assertion in prop_data_data_nocopy().

Revision 1.11 / (download) - annotate - [select for diffs], Mon Apr 28 20:22:53 2008 UTC (15 years, 11 months ago) by martin
Branch: MAIN
CVS Tags: yamt-nfs-mp-base2
Branch point for: wrstuden-revivesa
Changes since 1.10: +1 -8 lines
Diff to previous 1.10 (colored)

Remove clause 3 and 4 from TNF licenses

Revision 1.8.2.2 / (download) - annotate - [select for diffs], Sun Mar 23 00:12:45 2008 UTC (16 years, 1 month ago) by matt
Branch: matt-armv6
Changes since 1.8.2.1: +3 -3 lines
Diff to previous 1.8.2.1 (colored) next main 1.9 (colored)

sync with HEAD

Revision 1.10 / (download) - annotate - [select for diffs], Sat Feb 16 17:37:13 2008 UTC (16 years, 2 months ago) by apb
Branch: MAIN
CVS Tags: yamt-pf42-baseX, yamt-pf42-base, yamt-nfs-mp-base, yamt-lazymbuf-base15, yamt-lazymbuf-base14, matt-armv6-nbase, keiichi-mipv6-base, keiichi-mipv6, hpcarm-cleanup-base
Branch point for: yamt-pf42
Changes since 1.9: +3 -3 lines
Diff to previous 1.9 (colored)

For all files under src/common, as well as related man pages under
src/lib/libc, or related headers under src/sys/sys: change u_intNN_t to
uintNN_t.

Revision 1.8.2.1 / (download) - annotate - [select for diffs], Tue Nov 6 23:07:24 2007 UTC (16 years, 5 months ago) by matt
Branch: matt-armv6
CVS Tags: matt-armv6-prevmlocking
Changes since 1.8: +18 -13 lines
Diff to previous 1.8 (colored)

sync with HEAD

Revision 1.5.6.1 / (download) - annotate - [select for diffs], Sun Sep 30 03:38:46 2007 UTC (16 years, 6 months ago) by wrstuden
Branch: wrstuden-fixsa
Changes since 1.5: +91 -77 lines
Diff to previous 1.5 (colored) next main 1.6 (colored)

Catch up on netbsd-4 as of a few days ago.

Revision 1.5.4.1 / (download) - annotate - [select for diffs], Thu Sep 27 16:16:26 2007 UTC (16 years, 6 months ago) by xtraeme
Branch: netbsd-4
CVS Tags: wrstuden-fixsa-newbase, wrstuden-fixsa-base-1, wrstuden-fixsa-base, netbsd-4-0-RELEASE, netbsd-4-0-RC5, netbsd-4-0-RC4, netbsd-4-0-RC3, netbsd-4-0-RC2, netbsd-4-0-1-RELEASE, netbsd-4-0
Changes since 1.5: +91 -77 lines
Diff to previous 1.5 (colored)

Pull up following revision(s) (requested by joerg in ticket #904):
	sbin/veriexecctl/veriexecctl.c: revision 1.29 (via patch)
	common/lib/libprop/prop_string.c: revision 1.9 (via patch)
	distrib/sets/lists/comp/mi: revision 1.1063 (via patch)
	common/lib/libprop/prop_kern.c: revision 1.8 (via patch)
	common/include/prop/prop_string.h: revision 1.2 (via patch)
	common/include/prop/prop_ingest.h: revision 1.2 (via patch)
	usr.sbin/btdevctl/btdevctl.c: revision 1.5 (via patch)
	common/lib/libprop/prop_object_impl.h: revision 1.14 (via patch)
	common/lib/libprop/prop_rb.c: revision 1.7 (via patch)
	common/include/prop/prop_array.h: revision 1.5 (via patch)
	common/lib/libprop/prop_stack.h: revision 1.1 (via patch)
	common/lib/libprop/prop_object_impl.h: revision 1.16 (via patch)
	common/lib/libprop/prop_number.3: revision 1.7 (via patch)
	common/lib/libprop/prop_stack.h: revision 1.2 (via patch)
	common/lib/libprop/prop_stack.c: revision 1.1 (via patch)
	common/lib/libprop/prop_object_impl.h: revision 1.17 (via patch)
	common/lib/libprop/prop_dictionary_util.c: revision 1.2 (via patch)
	common/lib/libprop/prop_dictionary_util.3: revision 1.2 (via patch)
	common/lib/libprop/prop_dictionary.c: revision 1.18 (via patch)
	common/lib/libprop/prop_stack.c: revision 1.2 (via patch)
	common/lib/libprop/prop_object_impl.h: revision 1.18 (via patch)
	common/lib/libprop/prop_dictionary.c: revision 1.19 (via patch)
	common/include/prop/prop_bool.h: revision 1.3 (via patch)
	common/include/prop/prop_dictionary.h: revision 1.7 (via patch)
	common/include/prop/prop_data.h: revision 1.2 (via patch)
	sys/sys/dkio.h: revision 1.14 (via patch)
	usr.sbin/btdevctl/sdp.c: revision 1.4 (via patch)
	common/include/prop/Makefile: revision 1.3 (via patch)
	common/include/prop/prop_number.h: revision 1.5 (via patch)
	common/lib/libprop/prop_object.c: revision 1.14 (via patch)
	common/lib/libprop/prop_object.c: revision 1.15 (via patch)
	common/lib/libprop/prop_object.c: revision 1.16 (via patch)
	common/lib/libprop/prop_bool.3: revision 1.3 (via patch)
	common/lib/libprop/prop_data.3: revision 1.4 (via patch)
	common/lib/libprop/prop_object.3: revision 1.6 (via patch)
	common/lib/libprop/prop_data.c: revision 1.7 (via patch)
	common/lib/libprop/prop_data.c: revision 1.8 (via patch)
	common/lib/libprop/prop_data.c: revision 1.9 (via patch)
	common/lib/libprop/prop_dictionary.c: revision 1.20 (via patch)
	usr.sbin/btdevctl/print.c: revision 1.9 (via patch)
	sbin/veriexecctl/veriexecctl_parse.y: revision 1.22 (via patch)
	common/lib/libprop/prop_number.c: revision 1.12 (via patch)
	common/include/prop/proplib.h: revision 1.5 (via patch)
	common/lib/libprop/prop_number.c: revision 1.13 (via patch)
	common/lib/libprop/prop_number.c: revision 1.14 (via patch)
	common/include/prop/prop_object.h: revision 1.5 (via patch)
	common/lib/libprop/prop_array.3: revision 1.5 (via patch)
	common/include/prop/prop_object.h: revision 1.6 (via patch)
	common/lib/libprop/prop_string.3: revision 1.4 (via patch)
	common/lib/libprop/prop_bool.c: revision 1.10 (via patch)
	common/lib/libprop/Makefile.inc: revision 1.6 (via patch)
	common/lib/libprop/prop_ingest.c: revision 1.2 (via patch)
	common/lib/libprop/prop_bool.c: revision 1.11 (via patch)
	common/lib/libprop/prop_array.c: revision 1.10 (via patch)
	common/lib/libprop/prop_ingest.3: revision 1.3 (via patch)
	common/lib/libprop/prop_bool.c: revision 1.12 (via patch)
	common/lib/libprop/prop_array.c: revision 1.11 (via patch)
	common/lib/libprop/prop_string.c: revision 1.7 (via patch)
	common/lib/libprop/prop_dictionary.3: revision 1.8 (via patch)
	common/lib/libprop/prop_array.c: revision 1.9 (via patch)
	usr.sbin/btdevctl/db.c: revision 1.4 (via patch)
	common/lib/libprop/prop_string.c: revision 1.8 (via patch)
	common/include/prop/plistref.h: revision 1.1 (via patch)
Consider '\r' to be white space. Discussed with and also kept as local
change by freza. With this change, DOS style line endings work.

boolean_t -> bool
TRUE -> true
FALSE -> false

libprop is currently using a recursive parser. While this is fine for
userland, deeply nested arrays and dictionaries can easily overflow
the kernel stack and thereby force a panic.

Fix the internalizer and prop_object_release to use a separate call
stack and alter the dictionary and array handling to not recurse on
the C stack. The default stack has an inline depth of 16 elements,
which should keep the overhead reasonable.

This issue was found by Pavel Cahyna and Jachym Holecek.

Additionally add a limit for prop_object_copyin_ioctl to prevent user
programs from temporary allocating unbound amount of kernel memory.

Allow malloc to fail so that tight loops of userland processes can't
force panics by exhausting the kernel map.

Tested with the sample exploit of Jachym, his test suite and reviewed
by himself (initial patch), Christos Zoulas and Jason Thorpe.
struct plistref does not reference other proplib data types, so split it
in its own header file to be included by dkio.h. Fixes breakage due to
pollution from proplib.h in programs which include ioctl.h. Tested and OK
by dogcow@.

Attempt at fixing build failures after proplib was converted to bool:
FALSE -> false, TRUE -> true, boolean_t -> bool, int -> bool when
appropriate, include stdbool.h . proplib.h no longer provides boolean_t,
so it is necessary to change to bool.
From Tom Spindler (dogcow@).

Avoid using unbound amount of stack frames in prop_object_equal
by using a dynamic stack as well. Reorder arguments for the internalizer
as the iteration is always present and should go before possibly
NULL arguments.
Reviewed by mjf@ and adrianp@

Revision 1.9 / (download) - annotate - [select for diffs], Thu Aug 30 12:23:54 2007 UTC (16 years, 7 months ago) by joerg
Branch: MAIN
CVS Tags: yamt-x86pmap-base4, yamt-x86pmap-base3, yamt-x86pmap-base2, yamt-x86pmap-base, yamt-kmem-base3, yamt-kmem-base2, yamt-kmem-base, reinoud-bufcleanup-nbase, reinoud-bufcleanup-base, matt-armv6-base, cube-autoconf-base, cube-autoconf
Changes since 1.8: +18 -13 lines
Diff to previous 1.8 (colored)

Avoid using unbound amount of stack frames in prop_object_equal
by using a dynamic stack as well. Reorder arguments for the internalizer
as the iteration is always present and should go before possibly
NULL arguments.

Reviewed by mjf@ and adrianp@

Revision 1.8 / (download) - annotate - [select for diffs], Thu Aug 16 21:44:07 2007 UTC (16 years, 8 months ago) by joerg
Branch: MAIN
Branch point for: matt-armv6
Changes since 1.7: +32 -23 lines
Diff to previous 1.7 (colored)

libprop is currently using a recursive parser. While this is fine for
userland, deeply nested arrays and dictionaries can easily overflow
the kernel stack and thereby force a panic.

Fix the internalizer and prop_object_release to use a separate call
stack and alter the dictionary and array handling to not recurse on
the C stack. The default stack has an inline depth of 16 elements,
which should keep the overhead reasonable.

This issue was found by Pavel Cahyna and Jachym Holecek.

Additionally add a limit for prop_object_copyin_ioctl to prevent user
programs from temporary allocating unbound amount of kernel memory.
Allow malloc to fail so that tight loops of userland processes can't
force panics by exhausting the kernel map.

Tested with the sample exploit of Jachym, his test suite and reviewed
by himself (initial patch), Christos Zoulas and Jason Thorpe.

Revision 1.7 / (download) - annotate - [select for diffs], Thu Aug 16 16:28:17 2007 UTC (16 years, 8 months ago) by thorpej
Branch: MAIN
Changes since 1.6: +48 -48 lines
Diff to previous 1.6 (colored)

boolean_t -> bool
TRUE -> true
FALSE -> false

Revision 1.6 / (download) - annotate - [select for diffs], Sun Mar 4 22:31:43 2007 UTC (17 years, 1 month ago) by dillo
Branch: MAIN
CVS Tags: yamt-idlelwp-base8, vmlocking-base, vmlocking, thorpej-atomic-base, thorpej-atomic, reinoud-bufcleanup, matt-mips64-base, matt-mips64, hpcarm-cleanup
Changes since 1.5: +5 -2 lines
Diff to previous 1.5 (colored)

Fix white space skipping before closing tag when padding characters
are present.

Okayed by thorpej.

Revision 1.5.2.2 / (download) - annotate - [select for diffs], Wed Oct 18 14:41:09 2006 UTC (17 years, 6 months ago) by martin
Branch: newlock2
Changes since 1.5.2.1: +602 -0 lines
Diff to previous 1.5.2.1 (colored) to branchpoint 1.5 (colored) next main 1.6 (colored)

Add casts to apease lint.

Revision 1.5.2.1, Wed Oct 18 14:41:08 2006 UTC (17 years, 6 months ago) by martin
Branch: newlock2
Changes since 1.5: +0 -602 lines
FILE REMOVED

file prop_data.c was added on branch newlock2 on 2006-10-18 14:41:09 +0000

Revision 1.5 / (download) - annotate - [select for diffs], Wed Oct 18 14:41:08 2006 UTC (17 years, 6 months ago) by martin
Branch: MAIN
CVS Tags: yamt-splraiseipl-base5, yamt-splraiseipl-base4, yamt-splraiseipl-base3, yamt-splraiseipl-base2, newlock2-base, netbsd-4-base, netbsd-4-0-RC1
Branch point for: wrstuden-fixsa, newlock2, netbsd-4
Changes since 1.4: +8 -5 lines
Diff to previous 1.4 (colored)

Add casts to apease lint.

Revision 1.2.2.2 / (download) - annotate - [select for diffs], Sun Aug 27 01:20:56 2006 UTC (17 years, 7 months ago) by riz
Branch: abandoned-netbsd-4
Changes since 1.2.2.1: +1 -1 lines
Diff to previous 1.2.2.1 (colored) to branchpoint 1.2 (colored) next main 1.3 (colored)

Pull up following revision(s) (requested by thorpej in ticket #51):
	common/lib/libprop/prop_dictionary.c: revision 1.11
	common/lib/libprop/prop_number.c: revision 1.5
	common/lib/libprop/prop_bool.c: revision 1.5
	common/lib/libprop/prop_data.c: revision 1.4
	common/lib/libprop/prop_string.c: revision 1.4
	common/lib/libprop/prop_array.c: revision 1.6
Also guard object accessors against NULL (like we do foreign object
types)
so that apps can use this construct safely:
	obj = prop_dictionary_get(dict, "value");
	if (! prop_number_equals_integer(obj, 5)) {
		...
	}
Suggested by Iain Hibbert.

Revision 1.2.2.1 / (download) - annotate - [select for diffs], Wed Aug 23 21:21:14 2006 UTC (17 years, 8 months ago) by tron
Branch: abandoned-netbsd-4
Changes since 1.2: +18 -8 lines
Diff to previous 1.2 (colored)

Pull up following revision(s) (requested by thorpej in ticket #43):
	common/include/prop/prop_ingest.h: revision 1.1
	common/lib/libprop/prop_number.c: revision 1.4
	common/include/prop/prop_array.h: revision 1.3
	common/lib/libprop/prop_object_impl.h: revision 1.4
	common/include/prop/prop_dictionary.h: revision 1.4
	distrib/sets/lists/comp/mi: revision 1.911
	common/include/prop/Makefile: revision 1.2
	common/lib/libprop/prop_bool.c: revision 1.4
	distrib/sets/lists/base/shl.mi: revision 1.365
	common/lib/libprop/prop_data.c: revision 1.3
	lib/libprop/shlib_version: revision 1.4
	lib/libprop/Makefile: revision 1.6
	common/lib/libprop/prop_object.c: revision 1.4
	common/lib/libprop/prop_object.3: revision 1.4
	common/include/prop/proplib.h: revision 1.3
	common/lib/libprop/Makefile.inc: revision 1.3
	common/include/prop/prop_object.h: revision 1.4
	common/lib/libprop/prop_array.c: revision 1.4
	common/lib/libprop/prop_array.3: revision 1.4
	common/lib/libprop/prop_string.c: revision 1.3
	common/lib/libprop/prop_dictionary.3: revision 1.4
	common/lib/libprop/prop_ingest.c: revision 1.1
	common/lib/libprop/prop_ingest.3: revision 1.1
	common/lib/libprop/prop_dictionary.c: revision 1.9
Several changes to proplib:
- Arrays can now be externalized and internalized in the same way
  dictionaries can.
- Add new "externalize to file" and "internalize from file" functions
  to make reading a property list from a file and writing a property
  list to a file more convenient.
- Many assertions in the object implementations are gone.  Instead,
  calling an accessor for one object type with a different object type
  as an argument will return a suitable "invalid" value.
- prop_object_type() now returns a new PROP_TYPE_UNKNOWN value if called
  with a NULL object.
- Externalized property lists now contain a reference to the Apple XML
  plist DTD.
- Add a new prop_ingest(3) facility, which provides a convenient way to
  translate a dictionary into an arbitrary binary representation.

Revision 1.4 / (download) - annotate - [select for diffs], Tue Aug 22 21:21:23 2006 UTC (17 years, 8 months ago) by thorpej
Branch: MAIN
CVS Tags: yamt-splraiseipl-base, yamt-pdpolicy-base9, yamt-pdpolicy-base8
Changes since 1.3: +2 -2 lines
Diff to previous 1.3 (colored)

Also guard object accessors against NULL (like we do foreign object types)
so that apps can use this construct safely:

	obj = prop_dictionary_get(dict, "value");
	if (! prop_number_equals_integer(obj, 5)) {
		...
	}

Suggested by Iain Hibbert.

Revision 1.3 / (download) - annotate - [select for diffs], Mon Aug 21 04:13:28 2006 UTC (17 years, 8 months ago) by thorpej
Branch: MAIN
Changes since 1.2: +18 -8 lines
Diff to previous 1.2 (colored)

Several changes to proplib:
- Arrays can now be externalized and internalized in the same way
  dictionaries can.
- Add new "externalize to file" and "internalize from file" functions
  to make reading a property list from a file and writing a property
  list to a file more convenient.
- Many assertions in the object implementations are gone.  Instead,
  calling an accessor for one object type with a different object type
  as an argument will return a suitable "invalid" value.
- prop_object_type() now returns a new PROP_TYPE_UNKNOWN value if called
  with a NULL object.
- Externalized property lists now contain a reference to the Apple XML
  plist DTD.
- Add a new prop_ingest(3) facility, which provides a convenient way to
  translate a dictionary into an arbitrary binary representation.

Revision 1.2 / (download) - annotate - [select for diffs], Thu May 18 03:05:19 2006 UTC (17 years, 11 months ago) by thorpej
Branch: MAIN
CVS Tags: yamt-pdpolicy-base7, yamt-pdpolicy-base6, yamt-pdpolicy-base5, abandoned-netbsd-4-base
Branch point for: abandoned-netbsd-4
Changes since 1.1: +39 -19 lines
Diff to previous 1.1 (colored)

- Add prop_array_equals(), prop_dictionary_equals(), and
  prop_dictionary_keysym_equals(), and prop_object_equals() functions.
- Use realloc() where it makes sense.  There will be more changes in this
  area.
- Add a _prop_object_type structure that is used internally to keep
  information about the object types.  Decreases the footprint of the
  objects slightly by replacing several pointers with just one.

Revision 1.1 / (download) - annotate - [select for diffs], Thu Apr 27 20:11:27 2006 UTC (17 years, 11 months ago) by thorpej
Branch: MAIN

Initial commit of proplib, a library for manipulating property lists and
converting to/from an XML external representation (based on Apple XML
property lists).  Works in the kernel and user space.

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>