aboutsummaryrefslogtreecommitdiffstats
path: root/lib/erl_interface
AgeCommit message (Collapse)Author
2011-01-03Merge branch 'vb/ei-exts' into devBjörn-Egil Dahlberg
* vb/ei-exts: Fix testcases erl_global_whereis, erl_global_names Fix wrong erl_compare_ext result comparing lists Correct erl_global{register, unregister} functions Add PID (~p) type parameters to ei_format Add char (~c) type parameters to ei_format OTP-9015 Conflicts: lib/erl_interface/include/ei.h
2010-12-30Fix testcases erl_global_whereis, erl_global_namesBjörn-Egil Dahlberg
Enable erl_global_whereis and erl_global names.
2010-12-15Remove ancient distribution message DOP_NODE_LINK from all codePatrik Nyblom
2010-12-10Fix wrong erl_compare_ext result comparing listsVitaliy Batichko
Function erl_compare_ext of erl_interface library returns 1 instead -1 when comparing lists like [0] and [0, 1000]. Credits to: Evgeny Khirin <evgeny.khirin <at> erlios.com>
2010-12-10Correct erl_global{register, unregister} functionsVitaliy Batichko
C node needs DFLAG_DIST_MONITOR flag set when connecting, and support for processing monitoring start/end messages received from counterpart, to make global registration actually work.
2010-12-08Add PID (~p) type parameters to ei_formatVitaliy Batichko
2010-12-08Add char (~c) type parameters to ei_formatVitaliy Batichko
2010-12-06Prepare releaseErlang/OTP
2010-11-30Fix ei_decode_SUITE:test_ei_decode_long for halfword vmSverker Eriksson
2010-11-25erl_interface: Fix erl_term_len for integers and refsSverker Eriksson
From R14B integers use all 32 bits of external format INTEGER_EXT. erl_term_len still had the 28-bit check and therefor returned a too large values (7 instead of 5) for integers of 29-32 bits. erl_term_len also returned a 2 bytes too small value for references.
2010-11-22Merge branch 'ms/ei-fixes' into devBjörn-Egil Dahlberg
* ms/ei-fixes: ei: check memory was allocated ei: error if return value of ei_alloc_big is NULL OTP-8943
2010-11-22Merge branch 'ms/ei-fix-node-name-overflow' into devBjörn-Egil Dahlberg
* ms/ei-fix-node-name-overflow: ei: check the length of the node name OTP-8943
2010-11-11Merge branch 'maint-r14' into devBjörn-Egil Dahlberg
2010-11-08Add release notes for erl_interface-3.7.1.1Björn-Egil Dahlberg
2010-11-08Fix faulty tracelevel in erl_interfaceBjörn-Egil Dahlberg
2010-10-29ei: check memory was allocatedMichael Santos
2010-10-29ei: error if return value of ei_alloc_big is NULLMichael Santos
2010-10-26ei: check the length of the node nameMichael Santos
Check the length of the node name to prevent an overflow.
2010-10-14Merge branch 'ms/fix-zero-byte-allocation' into devBjörn-Egil Dahlberg
* ms/fix-zero-byte-allocation: registry: fix zero byte allocation OTP-8893
2010-10-14Merge branch 'sv/ei-number-parsing' into devBjörn-Egil Dahlberg
* sv/ei-number-parsing: teach ei_x_format to handle unary - and + OTP-8891
2010-10-06teach ei_x_format to handle unary - and +Steve Vinoski
Teach the format string parser used for ei_x_format() and ei_x_format_wo_ver() about unary negative and positive operators on numbers. Previously, passing a negative numeric constant or a positive numeric constant with an explicit leading plus sign within the format string would cause these functions to fail. Augment the format_wo_ver unit test in the ei_format suite with a regression test for these cases. An easy way to reproduce the problem is to use erl_call: erl_call -s foo@bar -a 'erlang list_to_integer [-1]' Without this change, erl_call fails with a -1 exit status. With this change, it properly prints "-1".
2010-10-06registry: fix zero byte allocationMichael Santos
Pasto in code results in 0 bytes (instead of length bytes) being allocated when the length of the key exceeds the static buffer.
2010-10-06erl_call: remove get_hostentMichael Santos
get_hostent does not properly handle IPv4 addresses on little endian platforms and fails with hostnames beginning with a number. Remove get_hostent and use ei_gethostbyname directly since gethostbyname supports IPv4 addresses. Reported-By: Julien Barbot
2010-09-13Prepare releaseOTP_R14BErlang/OTP
2010-09-13Merge branch 'pan/epmd-vulnerabilities/OTP-8780' into devPatrik Nyblom
* pan/epmd-vulnerabilities/OTP-8780: Teach testcases to survive TIME_WAIT overload Update erl_interface doc and testsuite for epmd changes Restore null termination of input buffer Teach testcase epmd_SUITE:too_large to accept econnaborted Teach epmd_cli.c to not respond 'Killed' when killing denied Calculate minimal packet size for ALIVE2 requests correctly Document epmd and it's options properly and fixup help text Fix anomalies in epmd not yet reported as security issues Remove two buffer overflow vulnerabilities in EPMD Remove all support for ancient EPMD protocol Remove very old protocol from EPMD Conflicts: lib/erl_interface/src/epmd/epmd_port.c
2010-09-13Merge branch 'sv/ei-writev' into devBjörn-Egil Dahlberg
* sv/ei-writev: fix incorrect writev iovec buffer handling in ei OTP-8837
2010-09-13Teach Winsock initialization to be thread safePatrik Nyblom
2010-09-13Make ei_threaded_send synchronizedPatrik Nyblom
2010-09-13Increase timeout value in ei_accept_SUITEPatrik Nyblom
2010-09-13Teach ei_accept_SUITE to wait for node publish instead of using random sleepsPatrik Nyblom
2010-09-13Merge branch 'egil/ei/fix-declspec/OTP-8826' into devBjörn-Egil Dahlberg
* egil/ei/fix-declspec/OTP-8826: Remove USE_DECLSPEC_THREAD from erl_interface
2010-09-11fix incorrect writev iovec buffer handling in eiSteve Vinoski
For platforms that support writev, ei uses iovec structures to be able to easily send noncontiguous data buffers. When sending large messages, the socket can of course block, in which case ei adjusts its iovecs to pick up where it left off when the socket becomes writeable again. Unfortunately the code that handled the case when the number of bytes written are less than the current iovec size adjusted only the iovec byte count but not the iovec data pointer, resulting in the same data being sent multiple times. The fix is trivial: in addition to subtracting the count of bytes already written from the current iovec's size, also increment the current iovec's data pointer by the number of bytes already written. Tested manually on Linux and verified to fix a problem detected in production with writing large binaries from a cnode to a regular node. No unit tests were added, however, because they use the local loopback which acts more like a pipe than an inter-host TCP connection. The closing of the TCP window on the receiving side and the resultant write blocking on the socket, which in turn caused the code that mishandled the iovecs to be exercised, could unfortunately not be readily duplicated in the erl_interface test suite.
2010-09-10Remove USE_DECLSPEC_THREAD from erl_interfaceBjörn-Egil Dahlberg
DECLSPEC causes access violations on vista.
2010-09-08erl_call: fix multiple buffer overflowsMichael Santos
Check operations that can overflow, e.g., erl_call -sname $(perl -e 'print "x"x5000') perl -e 'print "-module(", "x"x10000, ");"' | erl_call -m -r -sname foo
2010-09-07Merge branch 'mk/net-dragonfly-bsd-patches' into devBjörn Gustavsson
* mk/net-dragonfly-bsd-patches: Remove unused variables Use proper install method Add support for DragonFly BSD Add support for NetBSD
2010-09-06Merge branch 'ms/ei-overflow-fix' into devBjörn-Egil Dahlberg
* ms/ei-overflow-fix: ei: prevent overflow in ei_connect_init/ei_xconnect OTP-8814
2010-08-31Update erl_interface doc and testsuite for epmd changesPatrik Nyblom
2010-08-31Remove all support for ancient EPMD protocolPatrik Nyblom
2010-08-23ei: prevent overflow in ei_connect_init/ei_xconnectMichael Santos
Check the length of the buffer before copying. ei_cnode ec; struct in_addr addr; char *node = (char *)calloc(5001, 1); (void)memset(node, 'x', 5000); ei_connect_init(&ec, node, "", 0); addr.s_addr = inet_addr("192.168.1.1"); ei_xconnect(&ec, &addr, node);
2010-08-23ei_connect: correct man page examplesMichael Santos
2010-08-13Add support for DragonFly BSDMartti Kuparinen
These are the current NetBSD pkgsrc patches.
2010-07-29Merge branch 'cg/small-typos' into devBjörn Gustavsson
2010-07-27Fix compiler warnings in erl_interfaceBjörn-Egil Dahlberg
- Removed unused variable in ei_decode_term.c - Fixed faulty deallocation
2010-07-26Fix minor typos and errors in documentationCristian Greco
2010-07-05term_to_binary use all 32 bits of INTEGER_EXTSverker Eriksson
Earlier, external format INTEGER_EXT was only produced for 28-bit signed integers. Now full 32-bit signed integers are produced as INTEGER_EXT to avoid the more costly SMALL_BIG_EXT format. Both old and new code can read 32-bit INTEGER_EXT. Also fixed integer encoding bugs in erl_interface erl_encode/erl_decode. (Thanks to Alexander Demidenko for reporting)
2010-06-14OTP-8711 Make ei build on VxWorksBjörn-Egil Dahlberg
Make erl_interface build on VxWorks
2010-06-11Update release notesBjörn Gustavsson
2010-06-10Update version numbersBjörn Gustavsson
2010-06-08Merge branch 'sv/serge-new_float_ext' into devErlang/OTP
* sv/serge-new_float_ext: Let ei_get_type() return ERL_FLOAT_EXT instead of NEW_FLOAT_EXT Fix ei_tmo to restrict dflags to NEW_FLOAT_EXT compact IEEE 754 double encoding in external binary format for ei fix typo in ei_decode_ei_term documentation OTP-8684 sv/serge-new_float_ext compact IEEE 754 double encoding in external binary format for ei Implement the compact IEEE 754 double encoding in external binary format for ei. Encoding for ei now always produces the NEW_FLOAT_EXT format. Decoding and term printing handle both the old ERL_FLOAT_EXT encoding and the new NEW_FLOAT_EXT encoding. Legacy erl_interface code also handles the new encoding, but still produces the ERL_FLOAT_EXT encoding by default. Also enable the DFLAG_NEW_FLOATS distribution flag. ei_get_type() will return ERL_FLOAT_EXT regardless if the external format is encoded with ERL_FLOAT_EXT or NEW_FLOAT_EXT for doubles. Reduce the number of copies of the code for encoding and decoding doubles throughout ei and erl_interface by instead calling the ei encoding and decoding functions wherever possible. Restore commented-out float tests in ei_decode_SUITE and ei_encode_SUITE in lib/erl_interface/test. Modify them to make them match the style of other tests in the same suites. These changes are based on an ei float patch from Serge Aleynikov originally submitted against R12B-2 in July 2008 and reworked by Steve Vinoski May 2010.
2010-06-07Let ei_get_type() return ERL_FLOAT_EXT instead of NEW_FLOAT_EXTBjörn-Egil Dahlberg