FORM (GaussianMixture_and_PCA_drawConcentrationEllipses, L"GaussianMixture & PCA: Draw concentration ellipses", L"GaussianMixture & PCA: Draw concentration ellipses...") POSITIVE (L"Number of sigmas", L"1.0") INTEGER (L"X-dimension", L"1") INTEGER (L"Y-dimension", L"2") REAL (L"left Horizontal range", L"0.0") REAL (L"right Horizontal range", L"0.0") REAL (L"left Vertical range", L"0.0") REAL (L"right Vertical range", L"0.0") INTEGER (L"Label size", L"12") BOOLEAN (L"Garnish", 1) OK DO praat_picture_open (); GaussianMixture_and_PCA_drawConcentrationEllipses ((structGaussianMixture *)ONLY (classGaussianMixture), (structPCA *)ONLY (classPCA), GRAPHICS, GET_REAL (L"Number of sigmas"), 0, NULL, GET_INTEGER (L"X-dimension"), GET_INTEGER (L"Y-dimension"), GET_REAL (L"left Horizontal range"), GET_REAL (L"right Horizontal range"), GET_REAL (L"left Vertical range"), GET_REAL (L"right Vertical range"), GET_INTEGER (L"Label size"), GET_INTEGER (L"Garnish")); praat_picture_close (); END FORM (GaussianMixture_drawMarginalPdf, L"GaussianMixture: Draw marginal pdf", L"GaussianMixture: Draw marginal pdf...") INTEGER (L"X-dimension", L"1") REAL (L"left Horizontal range", L"0.0") REAL (L"right Horizontal range", L"0.0") REAL (L"left Vertical range", L"0.0") REAL (L"right Vertical range", L"0.0") NATURAL (L"Number of points", L"500") INTEGER (L"Number of bins", L"0.0")
// install protocol filter void protocol_filter(void) { assert(cfg.protocol); if (arg_debug) printf("Set protocol filter: %s\n", cfg.protocol); #ifndef SYS_socket (void) find_protocol_domain; fprintf(stderr, "Warning: --protocol not supported on this platform\n"); return; #else // build the filter struct sock_filter filter[32]; // big enough memset(&filter[0], 0, sizeof(filter)); uint8_t *ptr = (uint8_t *) &filter[0]; // header struct sock_filter filter_start[] = { VALIDATE_ARCHITECTURE, EXAMINE_SYSCALL, ONLY(SYS_socket), EXAMINE_ARGUMENT(0) }; memcpy(ptr, &filter_start[0], sizeof(filter_start)); ptr += sizeof(filter_start); #if 0 printf("entries %u\n", (unsigned) (sizeof(filter_start) / sizeof(struct sock_filter))); { unsigned j; unsigned char *ptr2 = (unsigned char *) &filter[0]; for (j = 0; j < sizeof(filter); j++, ptr2++) { if ((j % (sizeof(struct sock_filter))) == 0) printf("\n%u: ", 1 + (unsigned) (j / (sizeof(struct sock_filter)))); printf("%02x, ", (*ptr2) & 0xff); } printf("\n"); } printf("whitelist_len %u, struct sock_filter len %u\n", whitelist_len, (unsigned) sizeof(struct sock_filter)); #endif // parse list and add commands char *tmplist = strdup(cfg.protocol); if (!tmplist) errExit("strdup"); char *token = strtok(tmplist, ","); if (!token) errExit("strtok"); while (token) { struct sock_filter *domain = find_protocol_domain(token); assert(domain); memcpy(ptr, domain, whitelist_len * sizeof(struct sock_filter)); ptr += whitelist_len * sizeof(struct sock_filter); token = strtok(NULL, ","); #if 0 printf("entries %u\n", (unsigned) ((uint64_t) ptr - (uint64_t) (filter)) / (unsigned) sizeof(struct sock_filter)); { unsigned j; unsigned char *ptr2 = (unsigned char *) &filter[0]; for (j = 0; j < sizeof(filter); j++, ptr2++) { if ((j % (sizeof(struct sock_filter))) == 0) printf("\n%u: ", 1 + (unsigned) (j / (sizeof(struct sock_filter)))); printf("%02x, ", (*ptr2) & 0xff); } printf("\n"); } #endif } free(tmplist); // add end of filter struct sock_filter filter_end[] = { RETURN_ERRNO(ENOTSUP) }; memcpy(ptr, &filter_end[0], sizeof(filter_end)); ptr += sizeof(filter_end); #if 0 printf("entries %u\n", (unsigned) ((uint64_t) ptr - (uint64_t) (filter)) / (unsigned) sizeof(struct sock_filter)); { unsigned j; unsigned char *ptr2 = (unsigned char *) &filter[0]; for (j = 0; j < sizeof(filter); j++, ptr2++) { if ((j % (sizeof(struct sock_filter))) == 0) printf("\n%u: ", 1 + (unsigned) (j / (sizeof(struct sock_filter)))); printf("%02x, ", (*ptr2) & 0xff); } printf("\n"); } #endif // install filter unsigned short entries = (unsigned short) ((uintptr_t) ptr - (uintptr_t) (filter)) / (unsigned) sizeof(struct sock_filter); struct sock_fprog prog = { .len = entries, .filter = filter, }; if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &prog) || prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) { fprintf(stderr, "Warning: seccomp disabled, it requires a Linux kernel version 3.5 or newer.\n"); return; } #endif // SYS_socket }