[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#556790: Reduced testcase from libssh2



Hi,

Here is a reduced testcase based on libssh2. I get the ICE with gcc-4.3 -O2
only.


typedef long unsigned int size_t;
typedef struct _LIBSSH2_SESSION LIBSSH2_SESSION;
typedef struct _LIBSSH2_CHANNEL LIBSSH2_CHANNEL;
typedef struct _LIBSSH2_SFTP LIBSSH2_SFTP;
typedef struct _LIBSSH2_SFTP_ATTRIBUTES LIBSSH2_SFTP_ATTRIBUTES;
struct _LIBSSH2_SFTP_ATTRIBUTES { unsigned long flags; };
struct _LIBSSH2_CHANNEL { LIBSSH2_SESSION *session; };
struct _LIBSSH2_SFTP { LIBSSH2_CHANNEL *channel; unsigned char *stat_packet; };
struct _LIBSSH2_SESSION { void *abstract; void *(*alloc)(size_t count, void **abstract); };
static int sftp_attrsize(const LIBSSH2_SFTP_ATTRIBUTES * attrs) { int attrsize = 4; if (!attrs) { return attrsize; } if (attrs->flags & 0x00000001) if (attrs->flags & 0x00000002) attrsize += 8; if (attrs->flags & 0x00000004) attrsize += 4; if (attrs->flags & 0x00000008) attrsize += 8; return attrsize; }
static int sftp_stat(LIBSSH2_SFTP *sftp, const char *path, unsigned int path_len, int stat_type, LIBSSH2_SFTP_ATTRIBUTES * attrs) { LIBSSH2_CHANNEL *channel = sftp->channel; LIBSSH2_SESSION *session = channel->session; sftp->stat_packet = session->alloc((sftp_attrsize(attrs)), &(session)->abstract); }
libssh2_sftp_stat_ex(LIBSSH2_SFTP *sftp, const char *path, unsigned int path_len, int stat_type, LIBSSH2_SFTP_ATTRIBUTES *attrs) { int rc; BLOCK_ADJUST(rc, sftp->channel->session, sftp_stat(sftp, path, path_len, stat_type, attrs)); }




Reply to: