Beispiel #1
0
static int tc05(void)
{
	int major, pass = 16;
	unsigned int i, test_major[2] = {512, UINT_MAX};

	prk_info("Test Case 5: register_blkdev() with major=%u/%u\n",
		 test_major[0], test_major[1]);

	for (i = 0; i < sizeof(test_major) / sizeof(unsigned int); i++) {
		major = register_blkdev(test_major[i], BLK_DEV_NAME);
		prk_debug("major = %i\n", major);

		if (major == 0) {
			unregister_blkdev(test_major[i], BLK_DEV_NAME);
#ifdef BLKDEV_MAJOR_MAX
			pass = 0;
#endif
		} else {
			prk_debug("register_blkdev() with major %u got error %i\n",
				  test_major[i], major);
#ifndef BLKDEV_MAJOR_MAX
			pass = 0;
#endif
		}
	}

	prk_info("Test Case Result: %s\n", result_str(pass));
	return pass;
}
Beispiel #2
0
static int tc01(void)
{
	int major1, major2;
	int pass = 1;

	prk_info("Test Case 1: register_blkdev() with auto allocating "
		"major numbers (major=0)\n");

	major1 = register_blkdev(0, BLK_DEV_NAME);
	prk_debug("major1 = %i\n", major1);

	major2 = register_blkdev(0, BLK_DEV_NAME);
	prk_debug("major2 = %i\n", major2);

	if (major1 >= 0) {
		unregister_blkdev(major1, BLK_DEV_NAME);
	} else {
		pass = 0;
		prk_debug("1st call to register_blkdev() failed, error %i\n",
			major1);
	}

	if (major2 >= 0) {
		unregister_blkdev(major2, BLK_DEV_NAME);
	} else {
		pass = 0;
		prk_debug("2nd call to register_blkdev() failed, error %i\n",
			major2);
	}

	prk_info("Test Case Result: %s\n", result_str(pass));
	return pass;
}
Beispiel #3
0
static int tc04(void)
{
	int major, pass = 8;
	unsigned int i, test_major[2] = {256, 511};

	prk_info("Test Case 4: register_blkdev() with major=%u/%u\n",
		 test_major[0], test_major[1]);

	for (i = 0; i < sizeof(test_major) / sizeof(unsigned int); i++) {
		major = register_blkdev(test_major[i], BLK_DEV_NAME);
		prk_debug("major = %i\n", major);

		if (major == 0) {
			unregister_blkdev(test_major[i], BLK_DEV_NAME);
		} else if (major == -EBUSY) {
			prk_debug("device was busy, register_blkdev() with major %u skipped\n",
				  test_major[i]);
		} else {
			pass = 0;
			prk_debug("register_blkdev() with major %u got error %i\n",
				  test_major[i], major);
		}
	}

	prk_info("Test Case Result: %s\n", result_str(pass));
	return pass;
}
 Selector* Contextualize::operator()(Selector_Schema* s)
 {
   To_String to_string;
   string result_str(s->contents()->perform(eval->with(env, backtrace))->perform(&to_string));
   result_str += '{'; // the parser looks for a brace to end the selector
   Selector* result_sel = Parser::from_c_str(result_str.c_str(), ctx, s->path(), s->position()).parse_selector_group();
   return result_sel->perform(this);
 }
 Selector* Contextualize_Eval::operator()(Selector_Schema* s)
 {
   To_String to_string;
   string result_str(s->contents()->perform(eval)->perform(&to_string));
   result_str += '{'; // the parser looks for a brace to end the selector
   Selector* result_sel = Parser::from_c_str(result_str.c_str(), ctx, s->pstate()).parse_selector_group();
   return result_sel->perform(this);
 }
std::string __convert_py_to_string(PyObject* py_str) {
    Py_ssize_t str_len = PyString_Size(py_str);

    char* c_str = new char[str_len+1];
    memset(c_str, 0, str_len+1);
    strcpy_s(c_str, str_len+1, PyString_AsString(py_str));
    std::string result_str(c_str);

    return result_str;
}
std::string conv_str(std::string src_str,
                        const char* to_code,
                        const char* from_code)
{
    std::string result_str("");

    if (src_str.length() == 0)
        return result_str;

    iconv_t cd = iconv_open(to_code, from_code);
    if (cd == (iconv_t)(-1)) {
        perror("iconv_open");
        return result_str;
    }

    char* src = (char*)src_str.data();
    size_t src_len = src_str.length();
    size_t dest_len = (src_len * 4) + 1;

#if USE_SHARED_ARRAY
    boost::shared_array<char> dest_buffer = boost::shared_array<char> (new char[dest_len]);
    char* dest = dest_buffer.get();
    memset(dest, 0, dest_len * sizeof(char));
#else
    char* dest = (char*) calloc(dest_len, sizeof(char));
#endif
    char* saved_dest = dest;    // save start pointer of dest buffer 

#if TEST_MODE
    puts(src);
    printf("length of src = %d\n", src_len);
    printf("length of dest = %d\n", dest_len);
#endif

    if (iconv(cd, &src, &src_len, &dest, &dest_len) == -1) {
        printf("failed to iconv errno:%d EILSEQ:%d\n", errno, EILSEQ);
        return result_str;
    }

#if TEST_MODE
    for (int i = 0; i < dest_len; i ++)
        printf("dest[%d] = %d\n", i, saved_dest[i]);
    printf("dest = [%s]\n", saved_dest);
    printf("length of dest = %d\n", dest_len);
#endif

    iconv_close(cd);

    return std::string(saved_dest);
}
Beispiel #8
0
static int tc03(void)
{
	int major, major2, major3;
	int pass = 4;

	prk_info("Test Case 3: register_blkdev() with major != 0\n");

	/* autosearch for a free major number */
	major = register_blkdev(0, BLK_DEV_NAME);
	prk_debug("major = %i\n", major);

	if (major > 0) {
		unregister_blkdev(major, BLK_DEV_NAME);

		/* expected to return 0 */
		major2 = register_blkdev(major, BLK_DEV_NAME);

		/* this call has to fail with EBUSY return value */
		major3 = register_blkdev(major, BLK_DEV_NAME);

		if (major2 == 0) {
			unregister_blkdev(major, BLK_DEV_NAME);
		} else {
			pass = 0;
			prk_debug("1st call to register_blkdev() with major=%i "
				"failed with error %i\n", major, major2);
		}

		if (major3 == 0) {
			unregister_blkdev(major, BLK_DEV_NAME);
			pass = 0;
		} else {
			if (major3 != -EBUSY)
				pass = 0;
			prk_debug("2nd call to register_blkdev() with major=%i "
				"failed with error %i\n", major, major3);
		}

	} else {
		pass = 0;
		prk_debug("register_blkdev() failed with error %i\n", major);
	}

	prk_info("Test Case Result: %s\n", result_str(pass));
	return pass;
}
Beispiel #9
0
static int tc06(void)
{
	int major, pass = 32;

	prk_info("Test Case 6: register_blkdev() with name=\"\"\n");

	major = register_blkdev(0, "");
	prk_debug("major = %i\n", major);

	if (major >= 0) {
		unregister_blkdev(major, "");
	} else {
		pass = 0;
		prk_debug("register_blkdev() failed with error %i\n", major);
	}

	prk_info("Test Case Result: %s\n", result_str(pass));
	return pass;
}
Beispiel #10
0
static int tc04(void)
{
	int major, pass = 8;

	prk_info("Test Case 4: register_blkdev() with major=256\n");

	major = register_blkdev(256, BLK_DEV_NAME);
	prk_debug("major = %i\n", major);

	if (major == 0) {
		unregister_blkdev(256, BLK_DEV_NAME);
	} else {
		pass = 0;
		prk_debug("register_blkdev() failed with error %i\n", major);
	}

	prk_info("Test Case Result: %s\n", result_str(pass));
	return pass;
}
Beispiel #11
0
static int tc08(void)
{
	int major, pass = 128;

	prk_info("Test Case 8: register_blkdev() with name=NULL\n");

	/* should fail with -EINVAL */
	major = register_blkdev(0, NULL);
	prk_debug("major = %i\n", major);

	if (major >= 0) {
		unregister_blkdev(major, NULL);
		pass = 0;
	} else {
		prk_debug("register_blkdev() failed with error %i\n", major);
	}

	prk_info("Test Case Result: %s\n", result_str(pass));
	return pass;
}
Beispiel #12
0
static int tc05(void)
{
	int major, pass = 16;

	prk_info("Test Case 5: register_blkdev() with major=%u\n", UINT_MAX);

	major = register_blkdev(UINT_MAX, BLK_DEV_NAME);
	prk_debug("major = %i\n", major);

	if (major == 0) {
		unregister_blkdev(UINT_MAX, BLK_DEV_NAME);
	} else {
		prk_debug("reg blkdev with major %d failed with error %i\n",
			UINT_MAX, major);
		pass = 0;
	}

	prk_info("Test Case Result: %s\n", result_str(pass));
	return pass;
}
Beispiel #13
0
static int tc09(void)
{
	int major, pass = 256;

	prk_info("Test Case 9: unregister_blkdev() with name=NULL\n");

	major = register_blkdev(0, BLK_DEV_NAME);
	prk_debug("major = %i\n", major);

	if (major >= 0) {
		/* kernel should silently ignore this */
		unregister_blkdev(major, NULL);
		unregister_blkdev(major, BLK_DEV_NAME);
	} else {
		pass = 0;
		prk_debug("register_blkdev() failed with error %i\n", major);
	}

	prk_info("Test Case Result: %s\n", result_str(pass));
	return pass;
}
Beispiel #14
0
static int tc07(void)
{
	int major, pass = 64;

	prk_info("Test Case 7: unregister_blkdev() with major=0\n");

	major = register_blkdev(0, BLK_DEV_NAME);
	prk_debug("major = %i\n", major);

	if (major >= 0) {
		prk_debug("calling unregister_blkdev() with major=0\n");
		unregister_blkdev(0, BLK_DEV_NAME);
		prk_debug("calling unregister_blkdev() with major=%i\n", major);
		unregister_blkdev(major, BLK_DEV_NAME);
	} else {
		pass = 0;
		prk_debug("register_blkdev() failed with error %i\n", major);
	}

	prk_info("Test Case Result: %s\n", result_str(pass));
	return pass;
}
Beispiel #15
0
static int tc02(void)
{
	int major[MAX_MAJOR + 1];
	int i, pass = 2;

	/* Try to allocate block devices until all major numbers are used.
	 * After this register_blkdev() should return -EBUSY
	 */

	prk_info("Test Case 2: stress test of register_blkdev() "
		"with auto allocating major numbers (major=0)\n");

	memset(major, 0, sizeof(major));

	for (i = 0; i < sizeof(major) / sizeof(*major); ++i) {
		major[i] = register_blkdev(0, BLK_DEV_NAME);
		prk_debug("major[%i] = %i\n", i, major[i]);

		if (major[i] == -EBUSY) {
			prk_info("device is busy, register_blkdev() ret %i\n",
				major[i]);
		} else if (major[i] < 0) {
			prk_debug("register_blkdev() failed with error %i\n",
				major[i]);
			pass = 0;
		}
	}

	for (i = 0; i < sizeof(major) / sizeof(*major); ++i) {
		if (major[i] >= 0)
			unregister_blkdev(major[i], BLK_DEV_NAME);
	}

	prk_info("Test Case Result: %s\n", result_str(pass));
	return pass;
}
Beispiel #16
0
static void wpa_supplicant_eapol_cb(struct eapol_sm *eapol,
				    enum eapol_supp_result result,
				    void *ctx)
{
	struct wpa_supplicant *wpa_s = ctx;
	int res, pmk_len;
	u8 pmk[PMK_LEN];

	wpa_printf(MSG_DEBUG, "EAPOL authentication completed - result=%s",
		   result_str(result));

	if (wpas_wps_eapol_cb(wpa_s) > 0)
		return;

	wpa_s->eap_expected_failure = result ==
		EAPOL_SUPP_RESULT_EXPECTED_FAILURE;

	if (result != EAPOL_SUPP_RESULT_SUCCESS) {
		/*
		 * Make sure we do not get stuck here waiting for long EAPOL
		 * timeout if the AP does not disconnect in case of
		 * authentication failure.
		 */
		wpa_supplicant_req_auth_timeout(wpa_s, 2, 0);
	} else {
		ieee802_1x_notify_create_actor(wpa_s, wpa_s->last_eapol_src);
	}

	if (result != EAPOL_SUPP_RESULT_SUCCESS ||
	    !(wpa_s->drv_flags & WPA_DRIVER_FLAGS_4WAY_HANDSHAKE))
		return;

	if (!wpa_key_mgmt_wpa_ieee8021x(wpa_s->key_mgmt))
		return;

	wpa_printf(MSG_DEBUG, "Configure PMK for driver-based RSN 4-way "
		   "handshake");

	pmk_len = PMK_LEN;
	if (wpa_key_mgmt_ft(wpa_s->key_mgmt)) {
#ifdef CONFIG_IEEE80211R
		u8 buf[2 * PMK_LEN];
		wpa_printf(MSG_DEBUG, "RSN: Use FT XXKey as PMK for "
			   "driver-based 4-way hs and FT");
		res = eapol_sm_get_key(eapol, buf, 2 * PMK_LEN);
		if (res == 0) {
			os_memcpy(pmk, buf + PMK_LEN, PMK_LEN);
			os_memset(buf, 0, sizeof(buf));
		}
#else /* CONFIG_IEEE80211R */
		res = -1;
#endif /* CONFIG_IEEE80211R */
	} else {
		res = eapol_sm_get_key(eapol, pmk, PMK_LEN);
		if (res) {
			/*
			 * EAP-LEAP is an exception from other EAP methods: it
			 * uses only 16-byte PMK.
			 */
			res = eapol_sm_get_key(eapol, pmk, 16);
			pmk_len = 16;
		}
	}

	if (res) {
		wpa_printf(MSG_DEBUG, "Failed to get PMK from EAPOL state "
			   "machines");
		return;
	}

	wpa_hexdump_key(MSG_DEBUG, "RSN: Configure PMK for driver-based 4-way "
			"handshake", pmk, pmk_len);

	if (wpa_drv_set_key(wpa_s, WPA_ALG_PMK, NULL, 0, 0, NULL, 0, pmk,
			    pmk_len)) {
		wpa_printf(MSG_DEBUG, "Failed to set PMK to the driver");
	}

	wpa_supplicant_cancel_scan(wpa_s);
	wpa_supplicant_cancel_auth_timeout(wpa_s);
	wpa_supplicant_set_state(wpa_s, WPA_COMPLETED);

}