mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-06 11:41:34 +00:00
Bug #320116. sockaddr_rc might contain some padding which might not be initialized. Explicitly check the sockaddr_rc fields are set. That also produces better diagnostics about which field is unitialized. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13404
55 lines
1.1 KiB
C
55 lines
1.1 KiB
C
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
|
|
/* user space headers might not be there, define things ourselves. */
|
|
typedef struct {
|
|
uint8_t b[6];
|
|
} __attribute__((packed)) vui_bdaddr_t;
|
|
|
|
struct vui_sockaddr_rc {
|
|
sa_family_t rc_family;
|
|
vui_bdaddr_t rc_bdaddr;
|
|
uint8_t rc_channel;
|
|
};
|
|
|
|
#define VUI_AF_BLUETOOTH 31
|
|
#define VUI_BTPROTO_RFCOMM 3
|
|
|
|
#define VUI_BDADDR_ANY (&(vui_bdaddr_t) {{0, 0, 0, 0, 0, 0}})
|
|
|
|
int
|
|
main (int argc, char **argv)
|
|
{
|
|
int nSocket;
|
|
|
|
nSocket = socket(VUI_AF_BLUETOOTH, SOCK_STREAM, VUI_BTPROTO_RFCOMM);
|
|
|
|
if (nSocket < 0)
|
|
{
|
|
// Not supported, nothing to test...
|
|
return 1;
|
|
}
|
|
|
|
struct vui_sockaddr_rc aAddr;
|
|
// Ignore return values.
|
|
|
|
// Missing family
|
|
bind(nSocket, (struct sockaddr *) &aAddr, sizeof(aAddr));
|
|
|
|
aAddr.rc_family = VUI_AF_BLUETOOTH;
|
|
// Missing bdaddr.
|
|
bind(nSocket, (struct sockaddr *) &aAddr, sizeof(aAddr));
|
|
|
|
aAddr.rc_bdaddr = *VUI_BDADDR_ANY;
|
|
// Missing channel.
|
|
bind(nSocket, (struct sockaddr *) &aAddr, sizeof(aAddr));
|
|
|
|
aAddr.rc_channel = 5;
|
|
bind(nSocket, (struct sockaddr *) &aAddr, sizeof(aAddr));
|
|
|
|
return 0;
|
|
}
|