Hello. Due to our Jenkins being turned off for the time being we did not have Coverity runs for the last 6 weeks. I triggered a manual one today to see in what shape efl is.
38 new and only 15 fixed. Below are just the first 20 in summary. Please have a look at these inside the code you introduced. regards Stefan Schmidt -------- Forwarded Message -------- Subject: New Defects reported by Coverity Scan for Enlightenment Foundation Libraries Date: Tue, 11 Jul 2017 15:10:39 +0000 (UTC) From: scan-ad...@coverity.com To: ste...@datenfreihafen.org Hi, Please find the latest report on new defect(s) introduced to Enlightenment Foundation Libraries found with Coverity Scan. 38 new defect(s) introduced to Enlightenment Foundation Libraries found with Coverity Scan. 15 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan. New defect(s) Reported-by: Coverity Scan Showing 20 of 38 defect(s) ** CID 1377551: Integer handling issues (NEGATIVE_RETURNS) /src/lib/elementary/efl_ui_internal_text_interactive.c: 723 in _key_down_cb() ________________________________________________________________________________________________________ *** CID 1377551: Integer handling issues (NEGATIVE_RETURNS) /src/lib/elementary/efl_ui_internal_text_interactive.c: 723 in _key_down_cb() 717 Efl_Ui_Internal_Text_Interactive_Data *en = efl_data_scope_get(obj, MY_CLASS); 718 719 /* FIXME: Maybe allow selctions to happen even when not editable. */ 720 if (!en->editable) return; 721 722 cur = efl_text_cursor_get(obj, EFL_TEXT_CURSOR_GET_MAIN); >>> CID 1377551: Integer handling issues (NEGATIVE_RETURNS) >>> Assigning: signed variable "old_cur_pos" = >>> "evas_textblock_cursor_pos_get". 723 old_cur_pos = evas_textblock_cursor_pos_get(cur); 724 725 control = evas_key_modifier_is_set(ev->modifiers, "Control"); 726 alt = evas_key_modifier_is_set(ev->modifiers, "Alt"); 727 shift = evas_key_modifier_is_set(ev->modifiers, "Shift"); 728 #if defined(__APPLE__) && defined(__MACH__) ** CID 1377550: Error handling issues (CHECKED_RETURN) /src/lib/eina/eina_debug.c: 461 in eina_debug_remote_connect() ________________________________________________________________________________________________________ *** CID 1377550: Error handling issues (CHECKED_RETURN) /src/lib/eina/eina_debug.c: 461 in eina_debug_remote_connect() 455 if (fd < 0) goto err; 456 // set the socket to close when we exec things so they don't inherit it 457 if (fcntl(fd, F_SETFD, FD_CLOEXEC) < 0) goto err; 458 459 //Prepare the sockaddr_in structure 460 server.sin_family = AF_INET; >>> CID 1377550: Error handling issues (CHECKED_RETURN) >>> Calling "inet_pton" without checking return value (as is done elsewhere >>> 10 out of 11 times). 461 inet_pton(AF_INET, "127.0.0.1", &server.sin_addr.s_addr); 462 server.sin_port = htons(port); 463 464 if (connect(fd, (struct sockaddr *)&server, sizeof(server)) < 0) 465 { 466 perror("connect failed. Error"); ** CID 1377549: Concurrent data access violations (MISSING_LOCK) /src/lib/eina/eina_debug_cpu.c: 263 in _cpufreq_on_cb() ________________________________________________________________________________________________________ *** CID 1377549: Concurrent data access violations (MISSING_LOCK) /src/lib/eina/eina_debug_cpu.c: 263 in _cpufreq_on_cb() 257 _eina_debug_evlog_active = 1; 258 eina_evlog_start(); 259 } 260 if (!_eina_debug_sysmon_active) 261 { 262 _eina_debug_sysmon_reset = 1; >>> CID 1377549: Concurrent data access violations (MISSING_LOCK) >>> Accessing "_eina_debug_sysmon_active" without holding lock >>> "_Eina_Lock.mutex". Elsewhere, "_eina_debug_sysmon_active" is accessed with >>> "_Eina_Lock.mutex" held 1 out of 2 times (1 of these accesses strongly >>> imply that it is necessary). 263 _eina_debug_sysmon_active = 1; 264 eina_lock_release(&_sysmon_lock); 265 } 266 return EINA_TRUE; 267 } 268 ** CID 1377548: Insecure data handling (TAINTED_STRING) ________________________________________________________________________________________________________ *** CID 1377548: Insecure data handling (TAINTED_STRING) /src/lib/efl_wl/efl_wl.c: 3474 in seat_keymap_update() 3468 s->kbd.keymap_fd = eina_file_mkstemp("comp-keymapXXXXXX", &file); 3469 { 3470 int flags = fcntl(s->kbd.keymap_fd, F_GETFD); 3471 fcntl(s->kbd.keymap_fd, F_SETFD, flags | FD_CLOEXEC); 3472 } 3473 ftruncate(s->kbd.keymap_fd, s->kbd.keymap_mem_size); >>> CID 1377548: Insecure data handling (TAINTED_STRING) >>> Passing tainted string "file" to "eina_file_unlink", which cannot >>> accept tainted data. 3474 eina_file_unlink(file); 3475 eina_tmpstr_del(file); 3476 s->kbd.keymap_mem = 3477 mmap(NULL, s->kbd.keymap_mem_size, 3478 PROT_READ | PROT_WRITE, MAP_SHARED, s->kbd.keymap_fd, 0); 3479 ** CID 1377547: Null pointer dereferences (FORWARD_NULL) /src/lib/evas/canvas/evas_object_main.c: 1037 in _efl_canvas_object_efl_object_destructor() ________________________________________________________________________________________________________ *** CID 1377547: Null pointer dereferences (FORWARD_NULL) /src/lib/evas/canvas/evas_object_main.c: 1037 in _efl_canvas_object_efl_object_destructor() 1031 Evas_Object_Pointer_Data *pdata; 1032 int event_id; 1033 1034 edata = efl_data_scope_get(evas_object_evas_get(eo_obj), EVAS_CANVAS_CLASS); 1035 evas_object_hide(eo_obj); 1036 >>> CID 1377547: Null pointer dereferences (FORWARD_NULL) >>> Comparing "obj->events" to null implies that "obj->events" might be >>> null. 1037 if (obj->events) EINA_COW_WRITE_BEGIN(evas_object_events_cow, obj->events, Evas_Object_Events_Data, events) 1038 { 1039 EINA_LIST_FREE (events->focused_by_seats, dev) 1040 { 1041 event_id = _evas_event_counter; 1042 efl_event_callback_del(dev, EFL_EVENT_DEL, ** CID 1377546: Error handling issues (NEGATIVE_RETURNS) /src/lib/efl_wl/efl_wl.c: 1008 in data_device_selection_read() ________________________________________________________________________________________________________ *** CID 1377546: Error handling issues (NEGATIVE_RETURNS) /src/lib/efl_wl/efl_wl.c: 1008 in data_device_selection_read() 1002 int len; 1003 1004 do 1005 { 1006 unsigned char buf[2048]; 1007 >>> CID 1377546: Error handling issues (NEGATIVE_RETURNS) >>> "ecore_main_fd_handler_fd_get(fdh)" is passed to a parameter that >>> cannot be negative. 1008 len = read(ecore_main_fd_handler_fd_get(fdh), buf, sizeof(buf)); 1009 if (len > 0) 1010 { 1011 if (!ds->reader_data) 1012 ds->reader_data = eina_binbuf_new(); 1013 eina_binbuf_append_length(ds->reader_data, buf, len); ** CID 1377545: Memory - corruptions (OVERRUN) /src/lib/efl_wl/efl_wl.c: 3481 in seat_keymap_update() ________________________________________________________________________________________________________ *** CID 1377545: Memory - corruptions (OVERRUN) /src/lib/efl_wl/efl_wl.c: 3481 in seat_keymap_update() 3475 eina_tmpstr_del(file); 3476 s->kbd.keymap_mem = 3477 mmap(NULL, s->kbd.keymap_mem_size, 3478 PROT_READ | PROT_WRITE, MAP_SHARED, s->kbd.keymap_fd, 0); 3479 3480 memcpy(s->kbd.keymap_mem, str, s->kbd.keymap_mem_size); >>> CID 1377545: Memory - corruptions (OVERRUN) >>> Overrunning dynamic array "s->kbd.keymap_mem" at offset corresponding >>> to index variable "s->kbd.keymap_mem_size". 3481 s->kbd.keymap_mem[s->kbd.keymap_mem_size] = 0; 3482 free(str); 3483 3484 it = eina_hash_iterator_data_new(s->kbd.resources); 3485 EINA_ITERATOR_FOREACH(it, res) 3486 wl_keyboard_send_keymap(res, WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1, s->kbd.keymap_fd, s->kbd.keymap_mem_size); ** CID 1377544: Resource leaks (RESOURCE_LEAK) /src/lib/ecore/ecore_poller.c: 257 in ecore_poller_add() ________________________________________________________________________________________________________ *** CID 1377544: Resource leaks (RESOURCE_LEAK) /src/lib/ecore/ecore_poller.c: 257 in ecore_poller_add() 251 EINA_MAIN_LOOP_CHECK_RETURN; 252 } 253 254 if (!func) 255 { 256 ERR("callback function must be set up for an object of class: '%s'", MY_CLASS_NAME); >>> CID 1377544: Resource leaks (RESOURCE_LEAK) >>> Variable "poller" going out of scope leaks the storage it points to. 257 return NULL; 258 } 259 260 /* interval MUST be a power of 2, so enforce it */ 261 if (interval < 1) interval = 1; 262 ibit = -1; ** CID 1377543: Error handling issues (NEGATIVE_RETURNS) /src/lib/efl_wl/x11.x: 28 in _pipe_free() ________________________________________________________________________________________________________ *** CID 1377543: Error handling issues (NEGATIVE_RETURNS) /src/lib/efl_wl/x11.x: 28 in _pipe_free() 22 Eina_Bool incr : 1; 23 } Pipe; 24 25 static void 26 _pipe_free(Pipe *p) 27 { >>> CID 1377543: Error handling issues (NEGATIVE_RETURNS) >>> "ecore_main_fd_handler_fd_get(p->fdh)" is passed to a parameter that >>> cannot be negative. 28 close(ecore_main_fd_handler_fd_get(p->fdh)); 29 ecore_main_fd_handler_del(p->fdh); 30 eina_binbuf_free(p->buf); 31 free(p); 32 } 33 ** CID 1377542: Resource leaks (RESOURCE_LEAK) /src/lib/efl_wl/x11.x: 111 in x11_send_send() ________________________________________________________________________________________________________ *** CID 1377542: Resource leaks (RESOURCE_LEAK) /src/lib/efl_wl/x11.x: 111 in x11_send_send() 105 t = ecore_x_atom_get(mime_type); 106 107 dt = calloc(1, sizeof(Comp_Data_Device_Transfer)); 108 dt->type = type; 109 dt->fdh = ecore_main_fd_handler_add(fd, 0, x11_offer_write, dt, NULL, NULL); 110 dt->source = source; >>> CID 1377542: Resource leaks (RESOURCE_LEAK) >>> Failing to save or free storage allocated by "ecore_x_atom_name_get(t)" >>> leaks it. 111 dt->mime_type = eina_stringshare_add(ecore_x_atom_name_get(t)); 112 dt->source->transfers = eina_inlist_append(dt->source->transfers, EINA_INLIST_GET(dt)); 113 xconvertselection(ecore_x_display_get(), sel, t, comp_dnd_atom, win, ecore_x_current_time_get()); 114 } 115 116 static Eina_Bool ** CID 1377541: Error handling issues (NEGATIVE_RETURNS) /src/lib/efl_wl/efl_wl.c: 399 in fdh_del() ________________________________________________________________________________________________________ *** CID 1377541: Error handling issues (NEGATIVE_RETURNS) /src/lib/efl_wl/efl_wl.c: 399 in fdh_del() 393 } 394 395 static inline void 396 fdh_del(Ecore_Fd_Handler *fdh) 397 { 398 if (!fdh) return; >>> CID 1377541: Error handling issues (NEGATIVE_RETURNS) >>> "ecore_main_fd_handler_fd_get(fdh)" is passed to a parameter that >>> cannot be negative. 399 close(ecore_main_fd_handler_fd_get(fdh)); 400 ecore_main_fd_handler_del(fdh); 401 } 402 403 #define PTR_SWAP(A, B) ptr_swap((void**)A, (void**)B) 404 ** CID 1377540: Uninitialized members (UNINIT_CTOR) /src/bin/eolian_cxx/eolian_cxx.cc: 40 in eolian_cxx::options_type::options_type()() ________________________________________________________________________________________________________ *** CID 1377540: Uninitialized members (UNINIT_CTOR) /src/bin/eolian_cxx/eolian_cxx.cc: 40 in eolian_cxx::options_type::options_type()() 34 std::vector<std::string> include_dirs; 35 std::vector<std::string> in_files; 36 mutable Eolian_Unit const* unit; 37 std::string out_file; 38 bool main_header; 39 >>> CID 1377540: Uninitialized members (UNINIT_CTOR) >>> Non-static class member "unit" is not initialized in this constructor >>> nor in any functions that it calls. 40 options_type() : main_header(false) {} 41 }; 42 43 efl::eina::log_domain domain("eolian_cxx"); 44 45 static bool ** CID 1377539: Resource leaks (RESOURCE_LEAK) /src/lib/elput/elput_logind.c: 209 in _logind_session_object_path_get() ________________________________________________________________________________________________________ *** CID 1377539: Resource leaks (RESOURCE_LEAK) /src/lib/elput/elput_logind.c: 209 in _logind_session_object_path_get() 203 ret = EINA_TRUE; 204 205 message_fail: 206 eldbus_proxy_unref(proxy); 207 proxy_fail: 208 eldbus_object_unref(obj); >>> CID 1377539: Resource leaks (RESOURCE_LEAK) >>> Variable "reply" going out of scope leaks the storage it points to. 209 return ret; 210 } 211 212 static Eina_Bool 213 _logind_dbus_setup(Elput_Manager *em) 214 { ** CID 1377538: (TAINTED_STRING) /src/lib/efl_wl/efl_wl.c: 5155 in efl_wl_run() /src/lib/efl_wl/efl_wl.c: 5156 in efl_wl_run() /src/lib/efl_wl/efl_wl.c: 5160 in efl_wl_run() ________________________________________________________________________________________________________ *** CID 1377538: (TAINTED_STRING) /src/lib/efl_wl/efl_wl.c: 5155 in efl_wl_run() 5149 { 5150 gl = getenv("ELM_ACCEL"); 5151 if (gl) gl = strdup(gl); 5152 setenv("ELM_ACCEL", "gl", 1); 5153 } 5154 exe = ecore_exe_run(cmd, c); >>> CID 1377538: (TAINTED_STRING) >>> Passing tainted string "disp" to "setenv", which cannot accept tainted >>> data. 5155 if (disp) setenv("DISPLAY", disp, 1); 5156 if (env) setenv("WAYLAND_DISPLAY", env, 1); 5157 else unsetenv("WAYLAND_DISPLAY"); 5158 if (c->gl) 5159 { 5160 if (gl) setenv("ELM_ACCEL", gl, 1); /src/lib/efl_wl/efl_wl.c: 5156 in efl_wl_run() 5150 gl = getenv("ELM_ACCEL"); 5151 if (gl) gl = strdup(gl); 5152 setenv("ELM_ACCEL", "gl", 1); 5153 } 5154 exe = ecore_exe_run(cmd, c); 5155 if (disp) setenv("DISPLAY", disp, 1); >>> CID 1377538: (TAINTED_STRING) >>> Passing tainted string "env" to "setenv", which cannot accept tainted >>> data. 5156 if (env) setenv("WAYLAND_DISPLAY", env, 1); 5157 else unsetenv("WAYLAND_DISPLAY"); 5158 if (c->gl) 5159 { 5160 if (gl) setenv("ELM_ACCEL", gl, 1); 5161 else unsetenv("ELM_ACCEL"); /src/lib/efl_wl/efl_wl.c: 5160 in efl_wl_run() 5154 exe = ecore_exe_run(cmd, c); 5155 if (disp) setenv("DISPLAY", disp, 1); 5156 if (env) setenv("WAYLAND_DISPLAY", env, 1); 5157 else unsetenv("WAYLAND_DISPLAY"); 5158 if (c->gl) 5159 { >>> CID 1377538: (TAINTED_STRING) >>> Passing tainted string "gl" to "setenv", which cannot accept tainted >>> data. 5160 if (gl) setenv("ELM_ACCEL", gl, 1); 5161 else unsetenv("ELM_ACCEL"); 5162 free(gl); 5163 } 5164 free(env); 5165 free(disp); ** CID 1377537: Resource leaks (RESOURCE_LEAK) /src/lib/efl_wl/x11.x: 353 in x11_selection_request() ________________________________________________________________________________________________________ *** CID 1377537: Resource leaks (RESOURCE_LEAK) /src/lib/efl_wl/x11.x: 353 in x11_selection_request() 347 p->selection = ev->selection; 348 p->property = ev->property; 349 ecore_x_window_sniff(ev->requestor); 350 eina_hash_add(pipes, &p->win, p); 351 break; 352 } >>> CID 1377537: Resource leaks (RESOURCE_LEAK) >>> Variable "name" going out of scope leaks the storage it points to. 353 } 354 return ECORE_CALLBACK_RENEW; 355 } 356 357 static Eina_Bool 358 x11_property(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_X_Event_Window_Property *ev) ** CID 1377536: Null pointer dereferences (FORWARD_NULL) /src/lib/elementary/elm_cnp.c: 2000 in _x11_elm_cnp_selection_set() ________________________________________________________________________________________________________ *** CID 1377536: Null pointer dereferences (FORWARD_NULL) /src/lib/elementary/elm_cnp.c: 2000 in _x11_elm_cnp_selection_set() 1994 sel->loss_data = NULL; 1995 1996 evas_object_event_callback_add 1997 (sel->widget, EVAS_CALLBACK_DEL, _x11_sel_obj_del, sel); 1998 1999 ELM_SAFE_FREE(sel->selbuf, free); >>> CID 1377536: Null pointer dereferences (FORWARD_NULL) >>> Comparing "selbuf" to null implies that "selbuf" might be null. 2000 if (selbuf) 2001 { 2002 if (format == ELM_SEL_FORMAT_IMAGE) 2003 { 2004 // selbuf is actual image data, not text/string 2005 sel->selbuf = malloc(buflen + 1); ** CID 1377535: Incorrect expression (SIZEOF_MISMATCH) /src/lib/eina/eina_debug_bt.c: 236 in _trace_cb() ________________________________________________________________________________________________________ *** CID 1377535: Incorrect expression (SIZEOF_MISMATCH) /src/lib/eina/eina_debug_bt.c: 236 in _trace_cb() 230 231 // take a lock on grabbing thread debug info like backtraces 232 eina_spinlock_take(&_eina_debug_thread_lock); 233 // reset our "stack" of memory se use to dump thread info into 234 _eina_debug_chunk_tmp_reset(); 235 // get an array of pointers for the backtrace array for main + th >>> CID 1377535: Incorrect expression (SIZEOF_MISMATCH) >>> Passing argument "_eina_debug_thread_active_num * 8UL /* sizeof (void >>> *) */" to function "_eina_debug_chunk_tmp_push" and then casting the return >>> value to "void ***" is suspicious. 236 _bt_buf = _eina_debug_chunk_tmp_push 237 ((_eina_debug_thread_active_num) * sizeof(void *)); 238 if (!_bt_buf) goto err; 239 // get an array of pointers for the timespec array for mainloop + th 240 _bt_ts = _eina_debug_chunk_tmp_push 241 ((_eina_debug_thread_active_num) * sizeof(struct timespec)); ** CID 1377534: Integer handling issues (NEGATIVE_RETURNS) /src/lib/efl_wl/x11.x: 244 in x11_pipe_read() ________________________________________________________________________________________________________ *** CID 1377534: Integer handling issues (NEGATIVE_RETURNS) /src/lib/efl_wl/x11.x: 244 in x11_pipe_read() 238 { 239 Pipe *p = data; 240 ssize_t len; 241 unsigned char *buf; 242 243 buf = malloc(INCR_CHUNK_SIZE); >>> CID 1377534: Integer handling issues (NEGATIVE_RETURNS) >>> Assigning: signed variable "len" = "read". 244 len = read(ecore_main_fd_handler_fd_get(fdh), (void*)buf, INCR_CHUNK_SIZE); 245 if (len < 0) 246 { 247 free(buf); 248 _incr_update(p, 0); 249 eina_hash_del_by_key(pipes, &p->win); ** CID 1377533: Error handling issues (NEGATIVE_RETURNS) /src/lib/efl_wl/efl_wl.c: 3473 in seat_keymap_update() ________________________________________________________________________________________________________ *** CID 1377533: Error handling issues (NEGATIVE_RETURNS) /src/lib/efl_wl/efl_wl.c: 3473 in seat_keymap_update() 3467 s->kbd.keymap_mem_size = strlen(str) + 1; 3468 s->kbd.keymap_fd = eina_file_mkstemp("comp-keymapXXXXXX", &file); 3469 { 3470 int flags = fcntl(s->kbd.keymap_fd, F_GETFD); 3471 fcntl(s->kbd.keymap_fd, F_SETFD, flags | FD_CLOEXEC); 3472 } >>> CID 1377533: Error handling issues (NEGATIVE_RETURNS) >>> "s->kbd.keymap_fd" is passed to a parameter that cannot be negative. 3473 ftruncate(s->kbd.keymap_fd, s->kbd.keymap_mem_size); 3474 eina_file_unlink(file); 3475 eina_tmpstr_del(file); 3476 s->kbd.keymap_mem = 3477 mmap(NULL, s->kbd.keymap_mem_size, 3478 PROT_READ | PROT_WRITE, MAP_SHARED, s->kbd.keymap_fd, 0); ** CID 1377532: Incorrect expression (UNINTENDED_INTEGER_DIVISION) /src/lib/ecore/ecore_main.c: 2898 in _check_event_catcher_add() ________________________________________________________________________________________________________ *** CID 1377532: Incorrect expression (UNINTENDED_INTEGER_DIVISION) /src/lib/ecore/ecore_main.c: 2898 in _check_event_catcher_add() 2892 else if (array[i].desc == EFL_LOOP_EVENT_POLL_HIGH) 2893 { 2894 if (!pd->poll_high) 2895 { 2896 // Would be better to have it in sync with normal wake up 2897 // of the main loop for better energy efficiency, I guess. >>> CID 1377532: Incorrect expression (UNINTENDED_INTEGER_DIVISION) >>> Dividing integer expressions "1" and "60", and then converting the >>> integer quotient to type "double". Any remainder, or fractional part of the >>> quotient, is ignored. 2898 pd->poll_high = efl_add(EFL_LOOP_TIMER_CLASS, event->object, 2899 efl_event_callback_add(efl_added, EFL_LOOP_TIMER_EVENT_TICK, _poll_trigger, EFL_LOOP_EVENT_POLL_HIGH), 2900 efl_loop_timer_interval_set(efl_added, 1/60)); 2901 } 2902 ++pd->pollers.high; 2903 } ________________________________________________________________________________________________________ To view the defects in Coverity Scan visit, https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRbxLqXFz6FJu84hW4y2gEZ8Zh2Dbj78vBvHwGbbmDUxcAPszpAfvXY-2FqhsuD33vkE-2FyfzgUrJoGUmJzFCBhtcWX_-2FmMd5KLcJYyyIX-2FuE5a4Rrad03JQmaTiHmiOeYPhpTRrJM2XRJyiLBfjX0jQAPQG3hias05rdUZMmBCFe2u3nor1-2FvQIHQwUIYZeQyA0dWJvImIZ1bNXiJAS0vZR0EkbEDTgAwKQngQcuN4db1yS9iGph-2FqlDJyry6HZh8JTne710T6CL-2BmA48L4WSNIgoMrWmafGOYWcgV9dNQ27ku9vh5VWql4Pbk7gTIIaFiaeFA-3D To manage Coverity Scan email notifications for "ste...@datenfreihafen.org", click https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRbVDbis712qZDP-2FA8y06Nq4R3aILCf6IXgmYmDoKGucRqRnQkpoUfvYgJXrscHn-2Bw5rGv8chseQK5iGpNZvRs1UREBQh6plX-2BMYAe2dJ50GmF1WnvMnIELoawcIfquOnHI-3D_-2FmMd5KLcJYyyIX-2FuE5a4Rrad03JQmaTiHmiOeYPhpTRrJM2XRJyiLBfjX0jQAPQG3hias05rdUZMmBCFe2u3nmXcWiJCxd2kz30SE0dTgDNq8FkCkL-2F0lSZToYvXk2vbQdmD2p89vx1-2BUwCnB12QuuiC2Bra-2FyWtDBIW6iFrsGAU5w-2FD4HCQ3ZD0lqywypWOvRVEFmKAJgd4KM4AePoYobFlxXW98ezUI0BMpRm7P1g-3D ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel