*/
+#include <string.h>
#include <sys/types.h>
/* POINTER defines a generic pointer type */
UINT4 *input,
unsigned int len);
static void Decode(UINT4 *output, unsigned char *input, unsigned int len);
-static void MD5_memcpy(unsigned char *, unsigned char *, unsigned int);
-static void MD5_memset(unsigned char *, int, unsigned int);
static unsigned char PADDING[64] = {
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* Transform as many times as possible.
*/
if (inputLen >= partLen) {
- MD5_memcpy((POINTER)&context->buffer[idx], (POINTER)input, partLen);
+ memcpy((POINTER)&context->buffer[idx], (POINTER)input, partLen);
MD5Transform(context->state, context->buffer);
for (i = partLen; i + 63 < inputLen; i += 64)
i = 0;
/* Buffer remaining input */
- MD5_memcpy((POINTER)&context->buffer[idx], (POINTER)&input[i],
+ memcpy((POINTER)&context->buffer[idx], (POINTER)&input[i],
inputLen-i);
}
/* Zeroize sensitive information.
*/
- MD5_memset ((POINTER)context, 0, sizeof (*context));
+ memset((POINTER)context, 0, sizeof (*context));
}
/* MD5 basic transformation. Transforms state based on block.
/* Zeroize sensitive information.
*/
- MD5_memset ((POINTER)x, 0, sizeof (x));
+ memset((POINTER)x, 0, sizeof (x));
}
/* Encodes input (UINT4) into output (unsigned char). Assumes len is
output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) |
(((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24);
}
-
-/* Note: Replace "for loop" with standard memcpy if possible.
- */
-
-#ifndef MD5_memcpy
-static void MD5_memcpy (output, input, len)
-POINTER output;
-POINTER input;
-unsigned int len;
-{
- unsigned int i;
-
- for (i = 0; i < len; i++)
- output[i] = input[i];
-}
-#endif
-
-/* Note: Replace "for loop" with standard memset if possible.
- */
-
-#ifndef MD5_memset
-static void MD5_memset (output, value, len)
-POINTER output;
-int value;
-unsigned int len;
-{
- unsigned int i;
-
- for (i = 0; i < len; i++)
- ((char *)output)[i] = (char)value;
-}
-#endif
return 0;
}
+uint8_t user_supplied_bug8(memcached_st *memc)
+{
+ memcached_return rc;
+ memcached_st *mine;
+ memcached_st *clone;
+
+ memcached_server_st *servers;
+ char *server_list= "memcache1.memcache.bk.sapo.pt:11211, memcache1.memcache.bk.sapo.pt:11212, memcache1.memcache.bk.sapo.pt:11213, memcache1.memcache.bk.sapo.pt:11214, memcache2.memcache.bk.sapo.pt:11211, memcache2.memcache.bk.sapo.pt:11212, memcache2.memcache.bk.sapo.pt:11213, memcache2.memcache.bk.sapo.pt:11214";
+
+ servers= memcached_servers_parse(server_list);
+ assert(servers);
+
+ mine= memcached_create(NULL);
+ rc= memcached_server_push(mine, servers);
+ assert(rc == MEMCACHED_SUCCESS);
+ memcached_server_list_free(servers);
+
+ assert(mine);
+ clone= memcached_clone(NULL, mine);
+
+ memcached_quit(mine);
+ memcached_quit(clone);
+
+
+ memcached_free(mine);
+ memcached_free(clone);
+
+ return 0;
+}
+
/* Test flag store/retrieve */
uint8_t user_supplied_bug7(memcached_st *memc)
{
{"user_supplied_bug5", 1, user_supplied_bug5 },
{"user_supplied_bug6", 1, user_supplied_bug6 },
{"user_supplied_bug7", 1, user_supplied_bug7 },
+ {"user_supplied_bug8", 1, user_supplied_bug8 },
{0, 0, 0}
};