-
Notifications
You must be signed in to change notification settings - Fork 196
Minor json-change #7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
… empty string (php expects keys to be there)
|
I disagree with this change. NULL strings are not empty strings - it is not good practice to magically convert them inside of Json. We already had this discussion with Biswha in Oslo who wanted to do the same thing. |
|
Ok, let's create a wrapper instead then. if(record->classRxInclude) (pretty much) everywhere we use it, which is verbose and error-prone. On 27/02/12 15:17, Sigurd Teigen wrote:
Eystein |
|
Yes, a wrapper function would be the way to do it, e.g. JsonObjectAppendPHPString(). |
|
Agreed, will revert & fix. |
An empty rlist is represented as a NULL pointer, so all Rlist
functions should handle NULL pointers at runtime.
Fixes an issue on FreeBSD, where RlistContainsString is
called on a NULL pointer (before any elements are added):
Core was generated by `/var/cfengine/bin/cf-key'.
Program terminated with signal SIGABRT, Aborted.
#0 0x00000008024219ba in thr_kill () from /lib/libc.so.7
(gdb) bt
#0 0x00000008024219ba in thr_kill () from /lib/libc.so.7
#1 0x0000000802421984 in __raise (s=6) at /usr/src/lib/libc/gen/raise.c:52
#2 0x00000008024218f9 in abort () at /usr/src/lib/libc/stdlib/abort.c:65
#3 0x000000080249d101 in __assert (func=<optimized out>, file=<optimized out>, line=<optimized out>, failedexpr=<optimized out>)
at /usr/src/lib/libc/gen/assert.c:51
#4 0x00000008008cc5b5 in RlistContainsString (list=0x0, string=0x8048af320 "0a:14:50:21:f0:44") at rlist.c:292
#5 0x00000008009163e1 in FindV6InterfacesInfo (ctx=0x80481c0c0, interfaces=0x7ffffffed098, hardware=0x7ffffffed090, ips=0x7ffffffed080)
at unix_iface.c:704
#6 0x0000000800915f16 in GetInterfacesInfo (ctx=0x80481c0c0) at unix_iface.c:565
#7 0x00000008009142eb in DetectEnvironment (ctx=0x80481c0c0) at sysinfo.c:3304
#8 0x00000008008ab30f in GenericAgentDiscoverContext (ctx=0x80481c0c0, config=0x80481c000) at generic_agent.c:537
#9 0x000000000040231b in main (argc=1, argv=0x7fffffffeaa8) at cf-key.c:148
This was introduced recently, and I don't believe it's been
in any released packages, so no changelog entry.
Signed-off-by: Ole Herman Schumacher Elgesem <ole@northern.tech>
When compiling with explicit CFLAGS / LDFLAGS these are not handled in
the same way in different automake files.
The way we are mixing user-provided flags with configure generated ones
is not ideal, this change doesn't fix that, but it at least makes it
more consistent.
For example, compiling like this:
```
./autogen.sh --enable-debug && make CFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address"
```
Would cause the explicit flags to override flags from configure when
building cf-agent, but not in cf-promises. The end result is that debug
info (line numbers) is missing in some places.
**Before change:**
```
Direct leak of 9 byte(s) in 1 object(s) allocated from:
#0 0x7fc5c3640538 in strdup (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x77538)
#1 0x7fc5c31badc0 in xstrdup /home/vagrant/cfe/core/libntech/libutils/alloc.c:58
#2 0x559ddf51b064 in VerifyNotInFstab (/var/cfengine/bin/cf-agent+0xa0064)
#3 0x559ddf4d6bd1 in VerifyMountPromise (/var/cfengine/bin/cf-agent+0x5bbd1)
#4 0x559ddf4d506c in VerifyStoragePromise (/var/cfengine/bin/cf-agent+0x5a06c)
#5 0x559ddf529cd9 in LocateFilePromiserGroup (/var/cfengine/bin/cf-agent+0xaecd9)
#6 0x559ddf4d4a83 in FindStoragePromiserObjects (/var/cfengine/bin/cf-agent+0x59a83)
#7 0x559ddf4d4a2d in FindAndVerifyStoragePromises (/var/cfengine/bin/cf-agent+0x59a2d)
#8 0x559ddf4b7239 in KeepAgentPromise (/var/cfengine/bin/cf-agent+0x3c239)
#9 0x7fc5c3138372 in ExpandPromiseAndDo /home/vagrant/cfe/core/libpromises/expand.c:215
#10 0x7fc5c3138713 in ExpandPromise /home/vagrant/cfe/core/libpromises/expand.c:283
#11 0x559ddf4b5e43 in ScheduleAgentOperations (/var/cfengine/bin/cf-agent+0x3ae43)
#12 0x559ddf4b5656 in KeepPromiseBundles (/var/cfengine/bin/cf-agent+0x3a656)
#13 0x559ddf4b2870 in KeepPromises (/var/cfengine/bin/cf-agent+0x37870)
#14 0x559ddf4b025b in main (/var/cfengine/bin/cf-agent+0x3525b)
#15 0x7fc5c238cb96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)
```
**After change:**
```
Direct leak of 9 byte(s) in 1 object(s) allocated from:
#0 0x7fb282da4538 in strdup (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x77538)
#1 0x7fb28291edc0 in xstrdup /home/vagrant/cfe/core/libntech/libutils/alloc.c:58
#2 0x55d8be8f6064 in VerifyNotInFstab /home/vagrant/cfe/core/cf-agent/nfs.c:541
#3 0x55d8be8b1bd1 in VerifyMountPromise /home/vagrant/cfe/core/cf-agent/verify_storage.c:491
#4 0x55d8be8b006c in VerifyStoragePromise /home/vagrant/cfe/core/cf-agent/verify_storage.c:146
#5 0x55d8be904cd9 in LocateFilePromiserGroup /home/vagrant/cfe/core/cf-agent/promiser_regex_resolver.c:62
#6 0x55d8be8afa83 in FindStoragePromiserObjects /home/vagrant/cfe/core/cf-agent/verify_storage.c:84
#7 0x55d8be8afa2d in FindAndVerifyStoragePromises /home/vagrant/cfe/core/cf-agent/verify_storage.c:75
#8 0x55d8be892239 in KeepAgentPromise /home/vagrant/cfe/core/cf-agent/cf-agent.c:1697
#9 0x7fb28289c372 in ExpandPromiseAndDo /home/vagrant/cfe/core/libpromises/expand.c:215
#10 0x7fb28289c713 in ExpandPromise /home/vagrant/cfe/core/libpromises/expand.c:283
#11 0x55d8be890e43 in ScheduleAgentOperations /home/vagrant/cfe/core/cf-agent/cf-agent.c:1431
#12 0x55d8be890656 in KeepPromiseBundles /home/vagrant/cfe/core/cf-agent/cf-agent.c:1344
#13 0x55d8be88d870 in KeepPromises /home/vagrant/cfe/core/cf-agent/cf-agent.c:831
#14 0x55d8be88b25b in main /home/vagrant/cfe/core/cf-agent/cf-agent.c:279
#15 0x7fb281af0b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)
```
Changelog: None
Signed-off-by: Ole Herman Schumacher Elgesem <ole@northern.tech>
An empty rlist is represented as a NULL pointer, so all Rlist
functions should handle NULL pointers at runtime.
Fixes an issue on FreeBSD, where RlistContainsString is
called on a NULL pointer (before any elements are added):
Core was generated by `/var/cfengine/bin/cf-key'.
Program terminated with signal SIGABRT, Aborted.
#0 0x00000008024219ba in thr_kill () from /lib/libc.so.7
(gdb) bt
#0 0x00000008024219ba in thr_kill () from /lib/libc.so.7
cfengine#1 0x0000000802421984 in __raise (s=6) at /usr/src/lib/libc/gen/raise.c:52
cfengine#2 0x00000008024218f9 in abort () at /usr/src/lib/libc/stdlib/abort.c:65
cfengine#3 0x000000080249d101 in __assert (func=<optimized out>, file=<optimized out>, line=<optimized out>, failedexpr=<optimized out>)
at /usr/src/lib/libc/gen/assert.c:51
cfengine#4 0x00000008008cc5b5 in RlistContainsString (list=0x0, string=0x8048af320 "0a:14:50:21:f0:44") at rlist.c:292
#5 0x00000008009163e1 in FindV6InterfacesInfo (ctx=0x80481c0c0, interfaces=0x7ffffffed098, hardware=0x7ffffffed090, ips=0x7ffffffed080)
at unix_iface.c:704
cfengine#6 0x0000000800915f16 in GetInterfacesInfo (ctx=0x80481c0c0) at unix_iface.c:565
cfengine#7 0x00000008009142eb in DetectEnvironment (ctx=0x80481c0c0) at sysinfo.c:3304
cfengine#8 0x00000008008ab30f in GenericAgentDiscoverContext (ctx=0x80481c0c0, config=0x80481c000) at generic_agent.c:537
#9 0x000000000040231b in main (argc=1, argv=0x7fffffffeaa8) at cf-key.c:148
This was introduced recently, and I don't believe it's been
in any released packages, so no changelog entry.
Signed-off-by: Ole Herman Schumacher Elgesem <ole@northern.tech>
(cherry picked from commit 6ee912c)
...pty string (php expects keys to be there)